DirectX 11学習ノート(不定期更新)


目次
 
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);