有人会提供/指向我关于在 HLSL 和 XNA 中使用多个顶点流的解释或教程吗?我对 GPU 如何存储/访问它们、自定义着色器中流的优势或用途等感兴趣。
我已经看到了一些关于将多个顶点流用于实例化几何的示例,但是我很难理解底层机制。
更新
如果我有一个接受两个参数的顶点着色器(借自本教程)
InstancingVSoutput InstancingVS(InstancingVSinput input, float4x4 instanceTransform : TEXCOORD0, float4 color : TEXCOORD4)
{
InstancingVSoutput output;
float4 pos = input.Position;
pos = mul(pos, transpose(instanceTransform));
pos = mul(pos, WVP);
output.Position = pos;
output.Color = color;
return output;
}
从示例看来,我从中提取了这个instanceTransform
并input
从单独的流中提取。但是,在这种情况下,input
流是一个包含六个顶点的列表,并且instanceTransform
来自一个包含大量元素的流,其中包括平移矩阵。这应该用于实例化几何体。
我对这个着色器执行了多少次感到困惑——它是 VertexBuffer0.VertexCount*VertexBuffer1.VertexCount 吗?这种事情的问题在于,一旦有人弄清楚了,他们就不会费心向社区贡献一份写得很好的文档来详细说明他们的发现。
啊。