我正在尝试使用结构化缓冲区为每个实例数据使用Direct3D 10+实现硬件实例化,但我之前没有使用它们。
我理解在将顶点和每个实例数据组合到顶点着色器中的单个结构时如何实现实例化 - 即将两个顶点缓冲区绑定到输入汇编器并调用DrawIndexedInstanced函数。
在使用带有硬件实例的结构化缓冲区时,有人能告诉我绑定输入汇编程序和进行绘图调用等的过程吗?我似乎无法在任何地方找到一个很好的例子。
我理解结构化缓冲区被绑定为ShaderResourceViews,这是正确的吗?
答案 0 :(得分:3)
StructuredBuffers与普通缓冲区非常相似。唯一的区别是您在创建时指定了D3D11_RESOURCE_MISC_BUFFER_STRUCTURED标志,填写了StructureByteStride,当您创建ShaderResourceView时,格式为DXGI_UNKNOWN(格式由着色器中的结构隐式指定)。
StructuredBuffer<MyStruct> myInstanceData : register(t0);
是结构化缓冲区的HLSL中的语法,您只需使用[]运算符访问它,就像使用数组一样。
还有什么不清楚吗?