gpt4 book ai didi

performance - DrawPrimitives 性能

转载 作者:行者123 更新时间:2023-12-02 05:39:48 25 4
gpt4 key购买 nike

我想画单张脸而不是 xna 模型,因为它太慢了。

但是不知道有什么区别

  • 绘制基元
  • DrawUserPrimitives
  • DrawIndexedPrimitives
  • DrawUserIndexedPrimitives

哪种方法最快?索引有什么用?

最佳答案

您的问题的简单答案是“User”版本在CPU 上 相当慢,因为它们必须将顶点数据传输到 GPU(通过司机和公交车)每次他们被叫到。

用户 版本使用 GPU 上已经存在的顶点和索引缓冲区(您在加载时将它们放在那里)。它们要传输的数据要少得多,因此速度更快。

User”和“Indexed”版本也会分别对 GPU 产生性能影响。这种影响相对较小。一般来说,您无需担心。

存在 User 版本是因为当您的数据每一帧都发生变化时它们会更快。还有 DynamicVertexBuffer 可以与非 User 版本的绘图函数一起使用。我相信在您可以按所需大小预先分配缓冲区的情况下,它比 User 方法稍快。

Indexed 版本允许您使用索引缓冲区从顶点缓冲区中选择顶点(因此您绘制的三角形可以选择顶点缓冲区中任何位置的顶点)。另一种方法是将您的顶点缓冲区简单地解释为三角形顶点的顺序列表(基于 PrimitiveType)。存在索引缓冲区的主要原因是消除顶点缓冲区中重复顶点的需要(这需要额外的内存和 GPU 处理)。

但是...

XNA 的 Model 类在内部使用 DrawIndexedPrimitives。不仅如此,它还正确地 使用它(即:它不会绘制单个面孔 - 但一次可以绘制尽可能多的面孔 - 以获得最佳性能)。因此,如果您发现它很慢,那么您的问题出在其他地方。

我建议在尝试选择“解决方案”之前尝试诊断您的游戏表现不佳的原因。也许在此处(或 https://gamedev.stackexchange.com/ 上)的问题中寻求帮助。

关于performance - DrawPrimitives 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176134/

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