DrawIndexedInstanced 具有不同的 Index Count per Instance (Directx

DrawIndexedInstanced with a different Index Count per Instance (Directx11)

本文关键字:per Count Instance Directx Index DrawIndexedInstanced      更新时间:2023-10-16

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

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

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

Directx11 中有没有办法为每个实例绘制不同数量的三角形实例,还是我必须保持正常的绘制调用?

如文档中所述,实例化绘图是

[...]重复使用相同的几何体在场景中绘制多个对象。

它通过不交换顶点数据而是重用它来提高性能,而您的数据似乎并非如此,其中每个绘制调用的顶点源都不同。

因此,您必须坚持使用单个绘制调用,但为了提高性能,您可以将它们相互安排。每个状态更改都会向 GPU 提交一定的成本,如果您将着色器设置为用于所有绘制调用,则可以通过执行具有相同着色器和统一值的所有绘制调用来节省一些性能,并且仅在需要时进行切换。