こんばんは、
XMFLOAT3X3 を定数バッファーに送信しようとしています (以下のコードを参照)。
ZeroMemory(&constDesc, sizeof(constDesc));
constDesc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
constDesc.ByteWidth = sizeof(XMFLOAT3X3);
constDesc.Usage = D3D11_USAGE_DEFAULT;
result = m_pDevice->CreateBuffer(&constDesc,0,&m_pTexTransformCB);
if (FAILED(result)) {
MessageBoxA(NULL,"Error creating constant buffer m_pTexTransformCB", "Error", MB_OK);
return false;
}
しかし、コンパイラは、XMFLOAT3X3 が定数バッファーのバイト幅に対して無効な次元であることを教えてくれます。
D3D11: ERROR: ID3D11Device::CreateBuffer: The Dimensions are invalid. For ConstantBuffers, marked with the D3D11_BIND_CONSTANT_BUFFER BindFlag, the ByteWidth (value = 36) must be a multiple of 16 and be less than or equal to 65536. [ STATE_CREATION ERROR #66: CREATEBUFFER_INVALIDDIMENSIONS ]
ただし、HLSL は初めてなので、バイト幅を 48 に設定しても、シェーダーの cbuffer の float3x3 が正しく登録されるかどうかはわかりません。これをどのように処理するのが最善ですか?
さらに情報が必要な場合は、コメントしてください。質問を編集します。十分に明確であることを願っています。