c++ - 将 XMMATRIX 转换为 D3DXMATRIX

标签 c++ directx d3dx

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

我已经尝试过这个问题中的建议:how to convert XMMATRIX to D3DMATRIX in 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) .

关于c++ - 将 XMMATRIX 转换为 D3DXMATRIX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36748214/

相关文章:

C++ 继承 : Calling subclass function of template

c++ - 在 Visual Studio 2010 SP1 上调用 serial_port::cancel 会导致运行时检查失败 #0

c++ - 在虚拟继承中交换和复制成语的正确方法是什么?

c++ - 尝试将 User32.lib 添加到链接器而不是使用 #pragma 注释(lib, "User32.lib")

c++ - 无法打开源文件 d3dx9.h

c++ - 从 Visual Studio 2017 中的构建依赖项中排除头文件

c++ - Nsight 或其他用于 Visual Studio 2012 (GeForce) 的 Direct3D 调试器/性能分析器?

c++ - 未处理的异常 DirectX11.1 渲染 2D 图形

directx - 将网格切成两半 - DirectX

directx - 编译的directx9着色器文件的格式?