假设我为两个不同的网格创建了两个顶点缓冲区。
(I'm assuming creating separate buffers for separate meshes is how it's usually done)
现在,假设我想使用索引缓冲区绘制其中一个网格。 看看使用Direct3D 11进行实际渲染和计算这看起来似乎没有以任何方式创建索引缓冲区引用顶点缓冲区,那么索引缓冲区如何知道(在输入汇编期间)什么顶点缓冲行动?
我做了一些谷歌搜索没有答案,这让我认为有一些明显的东西,我错过了。
答案 0 :(得分:2)
你是对的,索引缓冲区不引用特定的顶点缓冲区。在DrawIndexed
活动期间,索引缓冲区用于将索引提供给活动顶点缓冲区(使用SetIndexBuffer / SetVertexBuffers设置的缓冲区)。
答案 1 :(得分:1)
实际上,Index Buffers和Vertex Buffers是完全独立的。
索引缓冲区将在绘制时知道VertexBuffer(例如:当两者都绑定到管道时)
您可以将索引缓冲区视为"查找表",您可以在其中保留要绘制的列表或元素索引。
这也意味着你可以完全附加两个"逻辑上不相关的"缓冲到管道并绘制它,没有什么可以阻止你这样做,但你当然会有一些奇怪的视觉效果。
去耦两者都有很多优点,这里有几个例子: