Navigation
Artikel
Stuff
RSS Feeds
|
Tutorials - [DirectX] Was mache ich bei OnLostDevice; ALT+Strg+Entf, minimierenSprachenübersicht/Programmierung/C / C++/ C#/Spieleprogrammierung/FAQ Keywords: OnLostDevice ALT+Strg+Entf, minimieren Vorwort Top
Code: while(msg.message != WM_QUIT) { //Windows message if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { if(g_DXGraphics.TestCooperativeLevel()) { while(g_DXGraphics.TestCooperativeLevel() != 1) { while(PeekMessage(&msg,g_hWnd,0,0,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } Sleep(100); } // Schritt 1 Ich kille alles was nicht managed (D3DPOOL_MANAGED) ist //Schritt 2 ich mache OnLostDevice bei den Objekten, die managed sind g_Sprite.OnLostDevice(); //Schritt 3 Ich resete das DX9 DeviceObject g_DXGraphics.RestoreObject(); //Schritt 4 Ich mache OnResetDevice bei den Objekten die managed sind g_Sprite.OnResetDevice(); //Schritt 5 Ich stelle die nicht managed Objekte wieder her //Schritt 6 Stats wiederherstellen, Licht und Matritzen neu erstellen/berechnen } //Mein Draw, usw. Zeug } }
Code: int bn_DirectXGraphics::TestCooperativeLevel() { HRESULT hrLostDevice = m_lpD3DDevice->TestCooperativeLevel(); //Do nothing if (hrLostDevice == D3DERR_DEVICELOST) return 2; //Reset it else if (hrLostDevice == D3DERR_DEVICENOTRESET) return 1; //Shut down! else if (hrLostDevice == D3DERR_DRIVERINTERNALERROR) ExceptionGameError("",0,0,"Internal error -shuting down",1); else return 0; }
Code: if(g_DXGraphics.Present() == D3DERR_DEVICELOST) g_bDeviceIsLost = true;
Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren? Sprachenübersicht/Programmierung/C / C++/ C#/Spieleprogrammierung/FAQ/[DirectX] Was mache ich bei OnLostDevice; ALT+Strg+Entf, minimieren |