我剛剛開始學習如何在C++中編寫DirectX 9應用程序,所以我仍然不是很好,而且我正在搞亂它。DirectX 9 C++程序崩潰並且不會重新打開
當我在程序崩潰後重新打開程序時,D3D設備無法創建,結果爲D3DERR_INVALIDCALL。我正在用MinGW中的G ++編譯,使用DirectX 2009年的SDK。我猜這是因爲我沒有發佈所有的設備和紋理等崩潰時,它仍然認爲我使用它們。它在重新啓動時重新打開。有人能夠指出我如何排序「重置」DirectX的正確方向嗎?
這裏是我用什麼來創建設備:
D3D = Direct3DCreate9(D3D_SDK_VERSION);
D3DPRESENT_PARAMETERS D3DPP;
ZeroMemory(&D3DPP, sizeof(D3DPP));
D3DPP.Windowed = TRUE;
D3DPP.SwapEffect = D3DSWAPEFFECT_DISCARD;
D3DPP.hDeviceWindow = hWnd;
D3DPP.BackBufferFormat = D3DFMT_X8R8G8B8;
D3DPP.BackBufferWidth = WIDTH;
D3DPP.BackBufferHeight = HEIGHT;
D3DDevice = 0; //Null pointer to make sure I can check it
HRESULT hr = D3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &D3DPP, &D3DDevice);
if (!D3DDevice) {
MessageBox(NULL,"Device could not be created","error",0);
switch (hr) {
case D3DERR_DEVICELOST:
MessageBox(NULL,"1","error",0);
break;
case D3DERR_INVALIDCALL:
MessageBox(NULL,"2","error",0);
break;
case D3DERR_NOTAVAILABLE:
MessageBox(NULL,"3","error",0);
break;
case D3DERR_OUTOFVIDEOMEMORY:
MessageBox(NULL,"4","error",0);
break;
};
return 1;
};
return 0;
給我們一些代碼看看,我們可能會幫助... – 2010-08-06 11:07:48