我正在使用 DirectXMath 构建我的 3D 模拟项目

   void SetConstantBuffer(ID3D11DeviceContext*_device_context, DirectX::XMMATRIX _world, DirectX::XMMATRIX _view, DirectX::XMMATRIX _projection)
   {
       ConstantBuffer const_buffer;
       const_buffer.View = DirectX::XMMatrixTranspose(_world);
       const_buffer.World = DirectX::XMMatrixTranspose(_view);
         const_buffer.Projection = DirectX::XMMatrixTranspose(_projection);
       _device_context->UpdateSubresource(m_const_buffer, 0, NULL, &const_buffer, 0, 0);
   }

我可能在 DirectXMath 中的 SIMD 标志上收到这些编译器错误:



有没有其他方法而不将其转换为 DirectX::XMFLOAT4X4?
顺便说一下,我使用的是 x86 机器并在 Visual Studio 2012 Express 上进行编译。

最佳答案

通过常量引用而不是通过值传递值。

void SetConstantBuffer(
    ID3D11DeviceContext*_device_context,
    const DirectX::XMMATRIX &_world,
    const DirectX::XMMATRIX &_view,
    const DirectX::XMMATRIX &_projection)

关于c++ - DirectX::XMMATRIX __declspec(align ('16')) 不会对齐,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15245378/

10-12 16:05