在我的大学项目中,我必须结合讲师提供的两个不同框架中的大多数,但是问题是一位讲师使用XMMATRIX,一个讲师使用D3DXMATRIX。有没有一种方法可以在两者之间进行转换而不必重新编写大多数框架?

我已经尝试过此问题的建议:how to convert XMMATRIX to D3DMATRIX in DirectX 9?

但这没有帮助。我需要将D3DXMATRIX从XMMATRIX传递到特定的着色器类。将XMMATRIX存储在XMFLOAT4X4中并进行强制转换不起作用,这只是告诉我,从float到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);

谢谢

最佳答案

(D3DXMATRIX)wMatrix将不起作用。

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

如果函数采用D3DXMATRIX*,则可以执行reinterpret_cast<D3DXMATRIX*>(&wMatrix)

08-18 19:31