XMMATRIX 和带有 __declspec(align('16')) 的形式参数不会对齐

XMMATRIX and formal parameter with __declspec(align('16')) won't be aligneD

我在 Visual Studio 2013 年尝试将旧的 DirectX 代码迁移到更新的代码。

在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);