【发布时间】:2014-06-19 16:08:18
【问题描述】:
我在一个函数中设置两个 XMMATRIX** 类型的变量时遇到了一些问题。函数原型如下所示:
bool ViewportFactory::CreateViewport(CanvasHandle* canvasHandlePtr, ViewportHandle** outViewportHandlePtr, DirectX::XMMATRIX** outProjectionMatrix, DirectX::XMMATRIX** outViewMatrix)
然后,稍后在函数定义中,我有以下两行:
*outProjectionMatrix = new DirectX::XMMATRIX(0.0f, 0.1f, /* ... */, 3.3f);
*outViewMatrix = new DirectX::XMMATRIX(0.0f, 0.1f, /* ... */, 3.3f);
但是,在启用了优化的 Win32 构建中,这些行给了我访问冲突。
打开优化后,很难准确推断问题出在哪里,但如果我更改这些行以将值设置为 nullptr,那么问题就会消失。
【问题讨论】:
-
XMMATRIX构造函数是做什么的? -
我不确定,它是 DirectX 的一部分。除非你的意思是我使用它,在这种情况下它只是设置矩阵的 16 个组件(为简洁起见,我删除了巨大的浮点数列表)。
-
哦,实际上,您可能想看看stackoverflow.com/a/15753540/138772 以及它提到的对齐问题。
标签: c++ directx directxmath