定数バッファーを持つ次の HLSL 頂点シェーダー フラグメントがあるとします。
cbuffer matrixBuffer
{
matrix worldMatrix;
matrix viewMatrix;
matrix projectionMatrix;
};
cbuffer matrixBuffer2
{
matrix worldMatrix2;
matrix viewMatrix2;
matrix projectionMatrix2;
};
定数バッファーの変数は、actual と関数で使用されるため、それらを設定する必要があります。
そしてC ++では、次の構造体を宣言しました:
struct MatrixType
{
D3DMATRIX world;
D3DXMATRIX view;
D3DXMATRIX projection;
};
私のアプリの初期化では、定数バッファー ポインター ID3D11Buffer* を作成します。
後でフレームごとの方法で定数バッファーを更新します。つまり、バッファーをマップし、サブリソースを更新し、バッファーをマップ解除し、頂点シェーダーでバッファーを設定します。
定数バッファーが 1 つしかない場合はすべて問題ありませんが、ここに私の質問があります。
directx はバッファ間でどのように違いますか? たとえば、これを達成する方法を worldMatrix2 に設定したいですか?
msdn リファレンスを読みましたが、答えがありませんでした。
サイズと要素が同じ定数バッファを 2 つ以上持つことはできますか? それらは連続したメモリに格納されているので、バッファを設定すると、HLSL で宣言された順に設定されますか?