我正在使用DirectX應用程序,並且在將兩個矩陣放在一起時遇到了一些問題,當我嘗試獲取運行時錯誤時。如果我在頭文件中聲明瞭矩陣,我只會得到錯誤,如果我在函數中聲明它們在本地工作正常。這不是在我得到這種類型的錯誤的應用程序中唯一的地方。將變量移動到頭文件時出現運行時錯誤
GraphicClass.cpp
void GraphicClass::UpdateScene()
{
Cube1World = DirectX::XMMatrixIdentity();
DirectX::XMVECTOR rotaxis = DirectX::XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f);
Rotation = DirectX::XMMatrixRotationAxis(rotaxis, rot);
Translation = DirectX::XMMatrixTranslation(0.0f, 0.0f, 4.0f);
Cube1World = Translation * Rotation; //I get run time error on this line
}
GraphicClass.h
class GraphicClass{
DirectX::XMMATRIX Cube1World;
DirectX::XMMATRIX Rotation;
DirectX::XMMATRIX Translation;
float rot = 0.01f;
//other Code
}
錯誤消息
Unhandled exception at 0x002F4C0F in Engine.exe: 0xC0000005: Access violation reading location 0xFFFFFFFF.
我能夠在頭文件中聲明Cube1World,但我如果試圖做它與旋轉或翻譯我得到運行時錯誤。
我使用visual studio 2015和最新的directx sdk運行windows 8.1。 我希望我已經解決了這個問題,提前致謝。
1.爲0xFFFFFFFF看起來很像一個未初始化或搗爛指針。 2.將問題分解到可能的最小值,可能是頭文件,帶有所需成員和UpdateScene方法的類的簡化版本,以及調用UpdateScene的主函數。 – user4581301
如果您使用VS的調試程序執行代碼,旋轉和翻譯在崩潰前的樣子是什麼? – user4581301
這是一個有趣的迂迴偏差。 – user4581301