DrawIndexedInstanced每个实例具有不同的索引计数(Directx11)

时间:2018-10-24 16:13:08

标签: c++ directx directx-11

我的应用程序中有很多情况,我使用具有相同统一值的相同着色器进行绘画调用,并考虑实例化绘画调用。但是,在我的案例中,调用具有不同数量的三角形。

据我了解,DrawIndexedInstanced仅允许绘制具有相同数量的三角形/索引的多个实例,所以我想我不能使用它。

我认为DrawIndexedInstancedIndirect可能会有所帮助,但这似乎基本上只能对DrawIndexedIstanced执行多次调用。

Directx11中是否有一种方法可以为每个实例绘制具有不同数量的三角形的实例,还是我必须保持正常的绘制调用?

1 个答案:

答案 0 :(得分:1)

documentation中所述,实例化图纸是

  

[...]重用相同的几何图形以在场景中绘制多个对象。

它通过不交换顶点数据而是重新使用它来提高性能,这似乎不是您的数据的情况,因为每个绘制调用的顶点源都不同。

因此,您必须坚持进行单次抽签,但是要提高性能,可以将它们相继登台。每次状态更改都会有一定的成本要提交给GPU,如果您将着色器设置为用于所有绘制调用,则可以通过使用相同的着色器和彼此统一的值进行所有绘制调用来节省某些性能必要时切换。