确实是两个有些相关的问题。
第一:如果我有不同且不同大小的顶点缓冲区 A 和 B 绑定到管道输入 槽 0 和 1,那么将在
中使用其中一个ImmediateContext->Draw(VertexCount, StartVertexLocation)
函数调用?
第二:如果没有缓冲区绑定到槽 0,而顶点缓冲区 B 仍绑定到槽 1,那么 Draw(...) 调用应该使用 B 吗?
在我很可能错误的理解中,Draw(N, ...) 调用应该从每个绑定缓冲区中绘制 N 个顶点,无论有多少...
多流渲染不允许您在每个 VB 中拥有不同的顶点数。如果您使用索引缓冲区,则所有绑定顶点缓冲区将使用相同的索引。
本质上,多流渲染只是一种从多个缓冲区中获取单个顶点的不同部分的方法,而不是另一种索引方法。从哪个槽拉出的所有逻辑都由输入布局的
D3D11_INPUT_ELEMENT_DESC.InputSlot
控制。例如,您可以在槽 0 中设置位置,在槽 1 中设置纹理坐标,在槽 2 中设置法线,或其他一些组合。
您可能会发现这个 DirectX 工具套件教程很有帮助