DrawInstanced与DrawIndexed并将它们混合在一起

时间:2013-06-11 10:24:47

标签: c++ directx directx-11

假设我有一个包含许多顶点的复杂对象,我想绘制这个对象的许多实例。我想知道哪种方法更快:一个DrawInstanced或许多DrawIndexed。如果我有非常简单的对象,也会更快,让我们说有4个顶点的精灵,我想画出数百个?我的意思是说?我的意思是DrawInstanced有点像Draw - 有时它会在VertexShader中多次放置相同的顶点。例如,sprite有4个顶点,但是使用三角形列表拓扑,其中两个将被处理两次,而使用DrawInstanced,它们只会被访问一次。对于更复杂的对象,这个问题越来越多,这也是我要求解决方案和你的意见的原因。

我的问题的第二部分。那么,如果多次处理相同顶点时出现问题,那么可能有一种方法可以将DrawInstanced与索引混合起来吗?

1 个答案:

答案 0 :(得分:3)

您可以同时使用索引和实例化,无需在它们之间进行选择。索引通过重用它们来减少必须提供给GPU的顶点数量。 Instancing是一种性能增强,允许您在一帧中多次快速绘制相同的几何体。