我尝试将旧的 DirectX 代码迁移到 Visual Studio 2013 中的较新代码。
在 Scene.cpp 中我有这个函数
void AddInstance(Instance aInstance);
这只是一个push_back:
m_vecInstances.push_back(aInstance);
这给出了一个错误:
Error 1 error C2719: 'aInstance': formal parameter with __declspec(align('16')) won't be aligned
原因是 Instance.h 成员有 DirectX::XMMATRIX m_Orientation;
我不明白如何解决这个问题。
我发现答案说 DirectX::XMFLOAT4X4 但我宁愿不这样做
我猜我可以换掉 std::vector 但我认为这也只是解决问题。
任何能解决我问题的答案都会让我开心<3
最佳答案
DirectX::XMMATRIX __declspec(align('16')) won't be aligned
虽然情况与这个问题的答案略有不同,但解决方案是相同的 - 通过 const 引用将 Instance
传递到 AddInstance 函数中。
void AddInstance(const Instance& aInstance);
关于c++ - XMMATRIX 和带有 __declspec(align ('16' )) 的形式参数不会对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29150124/