gpt4 book ai didi

c++ - 在 DirectX11 中为动态和静态对象使用单独的顶点缓冲区

转载 作者:行者123 更新时间:2023-11-30 03:51:16 28 4
gpt4 key购买 nike

在 DirectX 11 应用程序中为静态和动态对象使用单独的顶点缓冲区有什么好处吗?我的方法是将场景中所有对象的顶点存储在同一个顶点缓冲区中。

但是,我只需要重新映射整个集合(最多 200 个对象)中的少量对象(1 到 5 个)。大多数对象是静态的,不会以任何方式进行转换。这样做的最佳方法是什么?

最佳答案

用丢弃映射一个大的顶点缓冲区会强制驱动程序在每一帧分配新的内存。最多可以传输 4 帧,因此该缓冲区可以有 4 个拷贝。这可能导致内存过度使用和卡顿。例如,ATI 建议丢弃最大 4 mb 的顶点缓冲区 (GCN Performance Tweets)。此外,每次您都必须将静态数据不必要地复制到新的顶点缓冲区。

没有覆盖的映射应该会更好。它需要手动管理内存,因此您不会覆盖正在运行的数据。我不确定对性能的影响,但可以肯定这不是推荐的路径。

最好的方法是通过提供尽可能多的提示来简化驾驶员的工作。使用不可变标志创建静态顶点缓冲区,使用默认标志长期存在,使用动态标志创建动态。查看供应商指南,例如 GCN Performance TweetsDon’t Throw it all Away: Efficient Buffer Management了解更多详情。

关于c++ - 在 DirectX11 中为动态和静态对象使用单独的顶点缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31358529/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com