2

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

我已经尝试过这个问题中的建议:如何在 DirectX 9 中将 XMMATRIX 转换为 D3DMATRIX?

但这并没有帮助。我需要将 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);

谢谢

4

1 回答 1

2

(D3DXMATRIX)wMatrix不管用。

如果函数D3DXMATRIX按值取值,那么您可以执行*reinterpret_cast<D3DXMATRIX*>(&wMatrix).

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

于 2016-04-21T05:17:49.380 回答