如果多个不同的顶点缓冲区绑定到 D3D11 管道的不同输入槽,则 Draw() 调用使用哪一个?

问题描述 投票:0回答:1

确实是两个有些相关的问题。

第一:如果我有不同且不同大小的顶点缓冲区 A 和 B 绑定到管道输入 槽 0 和 1,那么将在

中使用其中一个
ImmediateContext->Draw(VertexCount, StartVertexLocation)

函数调用?

第二:如果没有缓冲区绑定到槽 0,而顶点缓冲区 B 仍绑定到槽 1,那么 Draw(...) 调用应该使用 B 吗?

在我很可能错误的理解中,Draw(N, ...) 调用应该从每个绑定缓冲区中绘制 N 个顶点,无论有多少...

buffer draw direct3d vertex slot
1个回答
0
投票

多流渲染不允许您在每个 VB 中拥有不同的顶点数。如果您使用索引缓冲区,则所有绑定顶点缓冲区将使用相同的索引。

本质上,多流渲染只是一种从多个缓冲区中获取单个顶点的不同部分的方法,而不是另一种索引方法。从哪个槽拉出的所有逻辑都由输入布局的

D3D11_INPUT_ELEMENT_DESC.InputSlot
控制。例如,您可以在槽 0 中设置位置,在槽 1 中设置纹理坐标,在槽 2 中设置法线,或其他一些组合。

您可能会发现这个 DirectX 工具套件教程很有帮助

© www.soinside.com 2019 - 2024. All rights reserved.