我正在创建一个 3D 场景,并且我刚刚在其中插入了一个立方体对象。它在原点处渲染得很好,但是当我尝试旋转它然后翻译它时,我得到一个巨大的变形立方体。这是我的代码中的问题区域:
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 很陌生,所以非常感谢任何帮助。