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

标签 c++ visual-studio-2013 directx

我尝试将旧的 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/

相关文章:

c++ - 如何在 OS X 上获得准确的堆栈基地址?

opengl - 低多边形锥体 - 尖端平滑阴影

algorithm - 渲染不透明、启用 Alpha 和启用混合的对象

c++ - DirectX 转换不工作

c++ - 将本地对象转换为指针,而不复制数据?

c++ - Poco进程不退出

c++ - 如何在 log4cpp 属性文件中使用环境变量

c++ - Microsoft Visual Studio C++ 2013 链接错误(使用 SQLite 包装器时)

c++ - Visual Studio 中的英特尔编译器未找到 boost 库

sql - Visual Studio 2013 数据库项目 - 在目标中删除对象但不在项目中