2011-01-19 38 views
1

有人会提供/指向我在HLSL和XNA中使用多个顶点流的解释或教程吗?我感兴趣的是它们如何被GPU存储/访问,自定义着色器中的流的优点或用途等。XNA - 顶点流?

我已经看到了几个使用多个顶点流实例化几何的例子,但是我我的头脑很难将我的头围绕在潜在的机制上。

更新

如果我有一个接受两个参数(borrowed from this tutorial

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; 
} 

它从我把这个从instanceTransforminput从独立的流被拉的例子似乎是一个顶点着色器。但是,在这种情况下,input流是一个包含六个顶点的列表,而instanceTransform来自包含翻译矩阵的大量元素流。这应该用于实例化几何。

我感到困惑了多少次这个shader得到执行 - 是VertexBuffer0.VertexCount * VertexBuffer1.VertexCount?这种事情的问题在于,一旦有人想出了它们,他们就不用费力地将精心编写的文档提交给社区,详细说明他们的发现。

Argh。

回答

1

由于没有人在尚未有帮腔,我给它一个去:-)这是关于顶点流的apphub论坛大主题:
http://forums.create.msdn.com/forums/p/46229/276901.aspx

从其中一个答案:

大意是这样的:不同的流 可以有不同的数据布局和 你VertexDeclaration确定哪些 数据会从什么流拉动。 所以,举例来说,你可以有一个存储所有的位置上有一个 缓冲 和存储您的所有 颜色一个缓冲区,你可以设定那些 不同的数据流;或者你 可以将它们融入一个单一的流, 但这并不总是方便。

希望它可以帮助;-)

+0

+1这有一定的帮助。查看我的更新。 – 2011-01-20 16:29:50