DirectX 11学習ノート(不定期更新)
1410 ワード
目次
1、DXとHLSLのマトリックス
2、定数バッファのサイズを作成するには16バイトで揃える必要がある
1、DXとHLSLのマトリックス
DXのマトリックス(DirectX::XMMATRIX)は行単位で優先的に格納され、HLSLのマトリックスはデフォルトでは列単位で優先的に格納される.この問題を解決する方法は2つある
1)DirectXのマトリックスを転置する
1、DXとHLSLのマトリックス
2、定数バッファのサイズを作成するには16バイトで揃える必要がある
1、DXとHLSLのマトリックス
DXのマトリックス(DirectX::XMMATRIX)は行単位で優先的に格納され、HLSLのマトリックスはデフォルトでは列単位で優先的に格納される.この問題を解決する方法は2つある
1)DirectXのマトリックスを転置する
DirectX::XMMATRIX m_matrix;
...
DirectX::XMMatrixTranspose(m_matrix);
2) HLSL row_major
cbuffer Cbuffer0: register(b0)
{
row_major matrix mWorld; // HLSL , row_major
}
2
2、 16
D3D11_BUFFER_DESC , ByteWidth , 16 ,
bufferDesc = {};
bufferDesc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
bufferDesc.CPUAccessFlags = 0;
bufferDesc.Usage = D3D11_USAGE_DEFAULT;
bufferDesc.ByteWidth = sizeof(CBufferTrans); // CBufferTrans , 16 , 16 ,
hr = m_pD3dDevice->CreateBuffer(&bufferDesc, nullptr, &m_pCBufferTrans);