誰かがHLSLとXNAで複数の頂点ストリームを使用する際の説明やチュートリアルを教えてくれますか? GPUがどのように格納/アクセスしているか、カスタムシェーダーのストリームの利点や用途などに興味があります。XNA - 頂点ストリーム?
インスタンス化されたジオメトリに対して複数の頂点ストリームを使用する例をいくつか見てきましたが、根底にある機構の周りに頭を巻きつけるのは苦労している。
更新
私はそれは私が別々のストリームから引き出されinstanceTransform
とinput
ことから、これを引っ張っ例からと思われる二つのパラメータ(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;
}
を受け入れ、頂点シェーダを持っている場合。しかし、この場合、input
ストリームは6つの頂点のリストであり、instanceTransform
は変換行列からなるはるかに多くの要素のストリームに由来します。これはインスタンス化されたジオメトリに使用されることになっています。
このシェーダが何回実行されるのか混乱しています。それはVertexBuffer0.VertexCount * VertexBuffer1.VertexCountですか?このような問題の問題は、誰かがそれを理解した後、彼らの発見を詳述しているよく書かれた文書をコミュニティに戻すことを気にしないということです。
+1に役立ちます願っています。私の更新を参照してください。 –
答えがあれば勝ちます。 =) –