конвертировать XMMATRIX в D3DXMATRIX

для моего университетского проекта мне нужно объединить большинство двух разных структур, предоставляемых лекторами, но проблема в том, что один лектор использует XMMATRIX, а другой — D3DXMATRIX. Есть ли способ конвертировать между ними без необходимости переписывать большинство фреймворков?

Я попробовал то, что предлагается в этом вопросе: Как конвертировать XMMATRIX в D3DMATRIX в 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);

Спасибо

2

Решение

(D3DXMATRIX)wMatrix не будет работать.

Если функция принимает D3DXMATRIX по значению, то вы можете сделать *reinterpret_cast<D3DXMATRIX*>(&wMatrix),

Если функция принимает D3DXMATRIX* тогда вы можете сделать reinterpret_cast<D3DXMATRIX*>(&wMatrix),

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]