我有我的Direct3D11应用程序,我试图解决几个小时已经有一个奇怪的问题。问题在于方法:矩阵造成崩溃
void CameraClass::Render()
{
XMFLOAT3 sUp, sLookAt, sRotationInRadians;
sUp.x = 0.0f;
sUp.y = 1.0f;
sUp.z = 0.0f;
sLookAt.x = 0.0f;
sLookAt.y = 0.0f;
sLookAt.z = 1.0f;
sRotationInRadians.x = m_Rotation.x * 0.0174532925f;
sRotationInRadians.y = m_Rotation.y * 0.0174532925f;
sRotationInRadians.z = m_Rotation.z * 0.0174532925f;
XMVECTOR vecLookAt = XMVectorSet(sLookAt.x, sLookAt.y, sLookAt.z, 0.0f);
XMVECTOR vecUp = XMVectorSet(sUp.x, sUp.y, sUp.z, 0.0f);
XMVECTOR vecPosition = XMVectorSet(m_Position.x , m_Position.y, m_Position.z, 0.0f);
XMMATRIX RotationMatrix(XMMatrixRotationRollPitchYaw(sRotationInRadians.x, sRotationInRadians.y, sRotationInRadians.z));
vecLookAt = XMVector3TransformCoord(vecLookAt, RotationMatrix);
vecUp = XMVector3TransformCoord(vecUp, RotationMatrix);
vecLookAt += vecPosition;
m_ViewMatrix = XMMatrixLookAtLH(vecPosition, vecLookAt, vecUp);
}
一切都很好,直到到达该行:
m_ViewMatrix = XMMatrixLookAtLH(vecPosition, vecLookAt, vecUp);
不知怎的,它会导致应用程序崩溃(切换到不回应是正确的)。
这里是实际调用什么样子:
XMMATRIX ViewMatrix;
XMMATRIX ProjectionMatrix;
XMMATRIX WorldMatrix;
m_D3D->BeginScene(0.0f, 0.0f, 0.0f, 1.0f);
m_Camera->Render();
m_D3D->GetWorldMatrix(WorldMatrix);
m_D3D->GetProjectionMatrix(ProjectionMatrix);
在前进,顶点和像素着色编译就好了,所以这不是一个问题。 很可能我在xnamath上做了一些错误(我对它完全陌生),但我不知道地球上会发生什么。提前致谢。如果需要,我会提供更多信息。
编辑 @ 1:经过几十次更改,我设法让Projection和World矩阵起作用。虽然我仍然无法设置视图矩阵。我改变了代码,所以它匹配了实际的代码,并摆脱了不重要的东西。
编辑 @ 2:从最后一分钟速报:有没有与XMMatrixLookAtLH功能的问题,因为我决定将结果保存到局部变量和它的作品,但如果我想分配结果矩阵类成员然后我得到崩溃。这非常有趣。
尝试调试该方法,并查看m_ViewMAtrix指针的值是什么? –
好吧,我得到这个完全相同的错误。当代码尝试计算XMMatrixLookAtLH或任何XNA函数时,代码只是神秘地崩溃。 – Caesar
尝试了一些东西后,我终于通过将我的模式设置为64x构建来实现它。尽管如此,仍然在寻找答案。 – Caesar