将XMMATRIX转换为D3DXMATRIX

时间:2016-04-20 15:16:36

标签: c++ directx d3dx

对于我的大学项目,我必须结合讲师提供的两个不同框架的大部分,但问题是一个讲师使用XMMATRIX,一个使用D3DXMATRIX。有没有办法在两者之间进行转换而不必重写大部分框架?

我尝试过这个问题的建议:how to convert XMMATRIX to D3DMATRIX in DirectX 9?

但这没有用。我需要将D3DXMATRIX传递给XMMATRIX中的特定着色器类。将XMMATRIX存储在XMFLOAT4X4中并进行投射不起作用只是告诉我没有从浮点数到d3dxmatrix的合适转换。

XMMATRIX worldMatrix, viewMatrix, projectionMatrix;
XMFLOAT4X4 wMatrix, vMatrix, pMatrix;

m_Direct3D->GetWorldMatrix(worldMatrix);
m_Camera->GetViewMatrix(viewMatrix);
m_Direct3D->GetProjectionMatrix(projectionMatrix);

XMStoreFloat4x4(&wMatrix, worldMatrix);
XMStoreFloat4x4(&vMatrix, viewMatrix);
XMStoreFloat4x4(&pMatrix, projectionMatrix);

m_Tshader->Render(m_Direct3D->GetDeviceContext(), m_Terrain->GetIndexCount(), (D3DXMATRIX)wMatrix, (D3DXMATRIX)vMatrix, (D3DXMATRIX)pMatrix,
m_Light->GetAmbientColour, m_Light->GetDiffuseColour, m_Light->GetDirection);

由于

1 个答案:

答案 0 :(得分:2)

(D3DXMATRIX)wMatrix无效。

如果函数按值D3DXMATRIX获取,则可以执行*reinterpret_cast<D3DXMATRIX*>(&wMatrix)

如果该功能需要D3DXMATRIX*,那么您可以执行reinterpret_cast<D3DXMATRIX*>(&wMatrix)