设置XMMATRIX时的C ++访问冲突

时间:2018-01-13 15:59:58

标签: c++ directx directx-11

我收到了错误

  

Reece的Prototype.exe中0x013D2841处的未处理异常:0xC0000005:访问冲突读取位置0xFFFFFFFF。

当下面一行运行时

world_matrix = _rotation * _position * _scale;

以上所有变量均为XMMATRIX类型。

当我使用new时,我只会收到此错误(我想要一个对象数组,然后迭代并渲染)。

1 个答案:

答案 0 :(得分:0)

据我所知,您不应该尝试使用new运算符

在heapMemory上分配XMMATRIX

XMMATRIX是特定于平台的类型,似乎这种类型在堆栈上以16字节格式对齐,它建议在堆中这样做:

  

因此,使用XMVECTOR和XMMATRIX对象的DirectXMath操作假定这些对象是16字节对齐的。如果使用推荐的Windows(请参阅使用正确的编译设置)编译器设置针对DirectXMath库编译代码,则这对于基于堆栈的分配是自动的。但是,确保包含XMVECTOR和XMMATRIX对象的堆分配或这些类型的转换符合这些对齐要求非常重要。

如果要创建默认对象,请尝试:

XMMATRIX mat = XMMatrixIdentity();