для моего университетского проекта мне нужно объединить большинство двух разных структур, предоставляемых лекторами, но проблема в том, что один лектор использует 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);
Спасибо
(D3DXMATRIX)wMatrix
не будет работать.
Если функция принимает D3DXMATRIX
по значению, то вы можете сделать *reinterpret_cast<D3DXMATRIX*>(&wMatrix)
,
Если функция принимает D3DXMATRIX*
тогда вы можете сделать reinterpret_cast<D3DXMATRIX*>(&wMatrix)
,
Других решений пока нет …