1

誰かが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ですか?この種の問題は、誰かがそれを理解すると、彼らは自分たちの発見を詳述するよく書かれた文書をコミュニティに送り返すことをわざわざしないということです。

ああ。

4

1 に答える 1

1

まだ誰もチャイムを鳴らしていないので、試してみます:-)これはVertex Streamsに関するapphubフォーラムのすばらしいスレッドです:http:
//forums.create.msdn.com/forums/p/46229/ 276901.aspx

答えの1つから:

要点は次のとおりです。ストリームごとにデータレイアウトが異なる可能性があり、VertexDeclarationによってどのデータがどのストリームから取得されるかが決まります。したがって、たとえば、すべての位置を格納する1つのバッファと、すべての色を格納する1つのバッファを用意し、それらを異なるストリームに設定することができます。または、それらを1つのストリームにまとめることもできますが、これは必ずしも便利ではありません。

それが役に立てば幸い ;-)

于 2011-01-20T12:16:48.770 に答える