2

私の大学のプロジェクトでは、講師が提供する 2 つの異なるフレームワークの大部分を組み合わせる必要がありますが、問題は、1 人の講師が XMMATRIX を使用し、もう 1 人が D3DXMATRIX を使用することです。フレームワークの大部分を書き直さなくても、2 つの間で変換する方法はありますか?

この質問で提案されていることを試しました: DirectX 9 で XMMATRIX を D3DMATRIX に変換する方法は?

しかし、これは役に立ちませんでした。XMMATRIX から特定のシェーダー クラスに D3DXMATRIX を渡す必要があります。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);

ありがとう

4

1 に答える 1

2

(D3DXMATRIX)wMatrix動作しないでしょう。

関数がD3DXMATRIX値を取る場合、次のことができます*reinterpret_cast<D3DXMATRIX*>(&wMatrix)

関数がかかる場合はD3DXMATRIX*、実行できますreinterpret_cast<D3DXMATRIX*>(&wMatrix)

于 2016-04-21T05:17:49.380 に答える