【发布时间】:2016-08-25 17:39:23
【问题描述】:
我有一个关于 directx 的基本问题(我使用 d3d9), 看了一些教程后,我想创建一个基本的 3d 程序,但我似乎没有得到一件事。
每次我想将模型绘制到 1 个顶点缓冲区中时,是否需要复制顶点/索引? 或者我可以将多个模型加载到 1 个顶点/索引缓冲区中吗? 还是我需要为每个模型制作多个顶点/索引缓冲区?
【问题讨论】:
我有一个关于 directx 的基本问题(我使用 d3d9), 看了一些教程后,我想创建一个基本的 3d 程序,但我似乎没有得到一件事。
每次我想将模型绘制到 1 个顶点缓冲区中时,是否需要复制顶点/索引? 或者我可以将多个模型加载到 1 个顶点/索引缓冲区中吗? 还是我需要为每个模型制作多个顶点/索引缓冲区?
【问题讨论】:
你可以随心所欲,如果你看IDirect3DDevice9::DrawIndexedPrimitive,你会发现BaseVertexIndex和StartIndex,它允许你偏移到顶点和索引缓冲区,所以是的,你可以打包几个同一缓冲区中的几何图形,这有助于减少对 SetIndices 和 SetStreamSource 的调用量。如果您的顶点步幅发生变化,您仍然需要使用字节偏移量和新的步幅调用后者。
除非您处理动态几何图形,否则您通常会将数据复制到缓冲区一次,然后跨帧重复使用它们。
【讨论】: