DirectDraw: !Flüssig
-
Hallo!
Ich habe meine erste Direct Draw Anwendung, die im Fenster läuft, erstellt.
Ich erstelle ein Fenster, habe eine WndProc und ein Surface das ich in den backbuffer blite und den anschließend in den primarybuffer flippe usw.
Also alles ganz normal...Jetzt habe ich aber das Problem, dass zwar alles angezeigt wird, so wie ich mir das vorstelle, aber nur SEHR ruckelig...
Die Maus hängt in 2 Sekundenabständen jeweils 1 Sekunde lang, die Tasten (die ich in der WndProc mittels WM_KEYDOWN abfange) reagieren auch erst nach etwa einer sekunde...
Ich habe gelesen, dass man das ganze irgendwie Timen muss .. Wenn ich ein Sleep(1) vor UpdateFrame() schreibe, ändert das aber auch nicht wirklich was...
Muss ich vielleicht DirectInput verwenden?
Hoffentlich hatte jemand von euch bereits solch ein Problem..
mfG
Gunther
-
Wie sieht die Nachrichtenschleife aus? Bitte posten.
Verwendest du GetMessage() oder PeekMessage().
-
Liegt nicht an DDraw.
Bye, TGGC \-/
-
Nicht auf Messages _warten_ im Handler.
Mauszeigerpos. lieber mit "GetCursorPos" (? - Hatte TGGC mal gepostet hier) "erfragen" als auf WM_MOUSEMOVE Dinger zu warten.
Die Windows-Messages sind nunmal auf übliche GUI ausgelegt und für's Zocken ziemlich ungeeignet, kommt aber auf Dein Problem an.
Sobald es etwas mehr sein soll, wie Du schon sagtestDirectInput!
-
Um zu checken, ob eine Taste gedrückt ist, kannst du "GetAsyncKeystate(...)" verwenden!
-
Also danke erstmal für die Antworten...
Ich habe ein bisschen mit GetTickCount herumexperimentiert und das hat mein Problem gelöst:lastTick = GetTickCount(); // MessageLoop while (1) { while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) goto final; TranslateMessage(&msg); DispatchMessage(&msg); } if (GetTickCount() - lastTick > 10) { if (!gameEng.UpdateFrame()) break; lastTick = GetTickCount(); } }
Ob eine Taste gedrückt wird mache ich zur Zeit über die normale WindowProc, aber wenn GetAsyncKeystate() eventuell besser ist, werd ich auf das umsteigen...
Danke
Gunther von Hagens
-
Das ist sinnlose CPU Verschwendung.
Bye, TGGC \-/
-
was, GetAsyncKeystate() ?
-
Ja. Ich komm mit den Messages auch aus.
-