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

标签 c++ directx directx-11

假设我有一个具有许多顶点的复杂对象,我想绘制该对象的许多实例。我想知道哪种方法会更快:一个 DrawInstanced 或多个 DrawIndexed。如果我有非常简单的对象,比如说有 4 个顶点的 Sprite ,并且我想绘制数百个,那么哪个会更快?我的意思是说?我的意思是 DrawInstanced 有点像 Draw - 有时它会多次将相同的顶点放入 VertexShader 中。例如,sprite 有 4 个顶点,但对于三角形列表拓扑,其中两个将被处理两次,而对于 DrawInstanced,它们只会被处理一次。 Ofc 对于更复杂的对象,这个问题会增加,这就是为什么我要求解决方案和你的意见。

我的问题的第二部分。所以,如果多次处理相同的顶点时出现问题,那么也许有一种方法可以将 DrawInstanced 与索引或其他东西混合使用?

最佳答案

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

关于c++ - DrawInstanced 与 DrawIndexed 并将它们混合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17041869/

相关文章:

c++ - Directx 11 前置缓冲器

c++ - 评估不同参数的 constexpr 函数时的运行时差异

用于计算模式出现次数的 C++ 脚本

c++ - 函数 ReadProcessMemory 不断返回 ERROR_PARTIAL_COPY

directx - 阴影贴图伪像

graphics - DirectX11 : Read stencil bit from compute shader

c++ - 为什么来自文件的浮点输入不起作用 C++

c++ - 销毁 directx 设备和交换链

c++ - 简单的 AI 运动算法无法正常工作

c++ - 为 GCC 创建正确的 D3D11 库文件