Microsoft Direct3D11 チュートリアルに従っていますが、C# と SlimDX を使用しています。定数バッファーを設定しようとしていますが、それを作成または設定する方法がわかりません。
定数バッファーを使用して 3 つのマトリックス (ワールド、ビュー、プロジェクション) を設定しようとしているだけですが、作成、データ入力、シェーダーへの受け渡しのすべての段階で苦労しています。
MSDN の HLSL (基本的にコピーしたもの) は次のとおりです。
cbuffer ConstantBuffer : register( b0 )
{
matrix World;
matrix View;
matrix Projection;
}
MSDN の C++ コードは次のとおりです。
ID3D11Buffer* g_pConstantBuffer = NULL;
XMMATRIX g_World;
XMMATRIX g_View;
XMMATRIX g_Projection;
//set up the constant buffer
D3D11_BUFFER_DESC bd;
ZeroMemory( &bd, sizeof(bd) );
bd.Usage = D3D11_USAGE_DEFAULT;
bd.ByteWidth = sizeof(ConstantBuffer);
bd.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
bd.CPUAccessFlags = 0;
if( FAILED(g_pd3dDevice->CreateBuffer( &bd, NULL, &g_pConstantBuffer ) ) )
return hr;
//
// Update variables
//
ConstantBuffer cb;
cb.mWorld = XMMatrixTranspose( g_World );
cb.mView = XMMatrixTranspose( g_View );
cb.mProjection = XMMatrixTranspose( g_Projection );
g_pImmediateContext->UpdateSubresource( g_pConstantBuffer, 0, NULL, &cb, 0, 0 );
これをSlimDXに変換する方法を知っている人はいますか? または、誰かが SlimDX のチュートリアルやリソースを知っていれば、それも役に立ちます。
ありがとう。