Hallo.
Ich habe ein Problem
Ich habe mir ein kleines Pong-spiel gebastelt, dass aufs erste funktioniert
Das Problem: Ich verwende einen Render-timer -.-
Das das unter euch Pro-Programmierern ja so verpöhnt ist, versuchte ich, ein Spiel auf fTime-Basis zu programmieren
-> Also schön die Zeit verwenden
Allerdings hat die Sache einen Haken:
In Scherfgen's Buch steht [S.7, Listing 1.2; Hinweis 3] "3. Nachrichten abrufen (durch PeekMessage) und verarbeiten (mit den beiden Funktionen TranslateMessage und DispatchMessage), bis sich keine Nachrichten mehr in der Warteschlange befinden."
Mein Programm funktioniert
Jedoch zeigt es nur ein Fenster an.
Das Problem ist einfach, dass es "ziemlich Nachrichtenhungrig" ist, also immer und immer wieder Nachrichten empfängt und verarbeitet.
Der Screen wird garnicht erst gerendert
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/*
[INFO]
Listing zum Problem: https://www.spieleprogrammierer.de/index.php?form=ThreadAdd&boardID=17
Variablen:
-> Global: float fTime
-> Global: DWORD t1, t2, tRes;
-> Global: MSG msg;
((-> Global: (HWND hWnd)))
*/
// Nachrichtenschleife
ZeroMemory(&msg,sizeof(msg));
while(msg.message!=WM_QUIT)
{
t1=timeGetTime();
while(PeekMessage(&msg,hWnd,0,0,PM_NOREMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// DIESER Punkt wird NIE erreicht
// Das Programm läuft und läuft in der Nachrichtenschleife.. immer und immer weiter ??!
// Mit PeekMessage(); und GetMessage();
t2=timeGetTime();
fTime=(float)(t2-t1)/1000.0f;
RenderGame(hWnd,fTime);
}
|
Achja, am Rande: BRAUCHT man ZeroMemory(); überhaupt ???
Wer helfen will bitte helfen
Lasst euch Zeit wenn ihr wollt
Ich hab viel Zeit.
Danke