Я создаю 3D-сцену, и я только что вставил в нее объект куба. Это делается отлично в начале координат, но когда я пытаюсь повернуть его, а затем перевести его, я получаю огромный деформированный куб. Вот область проблема в моем коде:DirectX11 - Matrix Translation
D3DXMATRIX cubeROT, cubeMOVE;
D3DXMatrixRotationY(&cubeROT, D3DXToRadian(45.0f));
D3DXMatrixTranslation(&cubeMOVE, 10.0f, 2.0f, 1.0f);
D3DXMatrixTranspose(&worldMatrix, &(cubeROT * cubeMOVE));
// Put the model vertex and index buffers on the graphics pipeline to prepare them for drawing.
m_Model->Render(m_Direct3D->GetDeviceContext());
// Render the model using the light shader.
result = m_LightShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix,
m_Model->GetTexture(), m_Light->GetDirection(), m_Light->GetDiffuseColor());
// Reset the world matrix.
m_Direct3D->GetWorldMatrix(worldMatrix);
Я обнаружил, что это cubeMOVE часть транспонированной, которая дает мне эту проблему, но я понятия не имею, почему.
Это вращает куб правильно:
D3DXMatrixTranspose(&worldMatrix, &cubeROT);
Это переводит куб правильно:
D3DXMatrixTranslation(&worldMatrix, 10.0f, 2.0f, 1.0f);
Но это создает деформированную сетку:
D3DXMatrixTranspose(&worldMatrix, &cubeMOVE);
Я совершенно новой для DirectX, поэтому любая помощь была бы очень оценена.
Совершенно верно. Я использовал D3DXMatrixTranspose вместо D3DXMatrixMultiply, спасибо! –