对于我的大学项目,我必须结合讲师提供的两个不同框架的大部分,但问题是一个讲师使用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);
由于
答案 0 :(得分:2)
(D3DXMATRIX)wMatrix
无效。
如果函数按值D3DXMATRIX
获取,则可以执行*reinterpret_cast<D3DXMATRIX*>(&wMatrix)
。
如果该功能需要D3DXMATRIX*
,那么您可以执行reinterpret_cast<D3DXMATRIX*>(&wMatrix)
。