誰かがHLSLとXNAでの複数の頂点ストリームの使用に関する説明またはチュートリアルを提供/指摘してくれますか?GPUによってそれらがどのように保存/アクセスされるか、カスタムシェーダーのストリームの利点または使用法などに興味があります。
インスタンス化されたジオメトリに複数の頂点ストリームを使用する例をいくつか見てきましたが、基になるメカニズムに頭を巻き付けるのに苦労しています。
アップデート
2つのパラメーターを受け入れる頂点シェーダーがある場合(このチュートリアルから借用)
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
ストリームは6つの頂点のリストでありinstanceTransform
、変換行列で構成されるはるかに多数の要素のストリームから取得されます。これは、インスタンス化されたジオメトリに使用されることになっています。
このシェーダーが実行される回数について混乱しています-VertexBuffer0.VertexCount*VertexBuffer1.VertexCountですか?この種の問題は、誰かがそれを理解すると、彼らは自分たちの発見を詳述するよく書かれた文書をコミュニティに送り返すことをわざわざしないということです。
ああ。