DirectDraw Problem...
-
Ich hab mich mal mit DirectX versucht. Hab bei mir sogar ein Buch dazu gefunden (Stefan Zerbst, 3D Spieleprogrammierung mit DirectX).
Jetzt hab ich mir das alles schoen durchgelesen und sogar einigermasen kapiert. Ich kann es sogar ohne Fehler uebersetzten. Das Programm ist (vom moeglichen abgesehen) relativ einfach. Es erzeugt bloss zwei Puffer und schreibt FRONT bzw. BACK drauf. Auf druck von F12 sollte er eigentlich den Buffer wechseln. Allerdings stuerzt das Programm dann immer ab.
Kann mir einer sagen, warum? Soll ich den Code posten (ist halt etwas lang)?
-
Der Ausschnitt, was Du nach Druck auf F12 machst, wird reichen...
-
da wird die funktion hier aufgerufen:
bool xxxDDraw_Puffer_wechseln ( void ) { HRESULT ddrval; for ( int i = 0; i < 100; i++ ) xxxMale_Pixel( rand()%800, rand()%600, rand()%256, lpDDSBack); ddrval = lpDDSPrimary->Flip(NULL, DDFLIP_WAIT); if(ddrval == DD_OK) return true; else if ( ddrval == DDERR_SURFACELOST) { ddrval = lpDDSPrimary->Restore(); if ( ddrval != DD_OK ) return false; ddrval = lpDDSPrimary->Flip(NULL, DDFLIP_WAIT); if ( ddrval != DD_OK) return false; return true; } return true; }
der sagt das hier dann:
User Breakpoint called from Code 0x77f767cd
hab den fehler gefunden:
LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { switch(message) { case WM_DESTROY: { done = true; PostQuitMessage(0); return 0; } break; case WM_KEYDOWN: switch(wparam) { case VK_ESCAPE: { PostMessage(hwnd, WM_CLOSE, 0, 0); return 0; } break; case VK_F12: { //xxxDDraw_Puffer_wechseln(); MessageBox(hwnd, "HI", "XXX", MB_OK); return 0; } break; } break; default: break; } return (DefWindowProc(hwnd, message, wparam, lparam)); }
der hat ein problem mit dem event VK_F12. wenn ich es unter VK_ESCAPE mache geht es wunderbar. aber bei F12 stuerzt er ab....