|
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
|
class Timer(){
private:
double startTicks;
public:
Timer(){startTicks = 0;}
void start(){startTicks = SDL_GetTicks();}
double getTicks(){return SDL_GetTicks() - startTicks;}
};
main(){
//init SDL
bool quit = false;
Timer time;
double framerate = 60.0f;
while(!quit){
//startet den Timer (erneut)
time.startTicks();
//Die schleife....
while(time.getTicks() < 1000.0f/framerate){
//Window handle
while( SDL_PollEvent( &event ) ){
if( event.type == SDL_QUIT ){
quit = true;
}
}
}
//Bilder anzeigen,tasten abfragen......
}
SDL_Quit();
return 0;
}
|
Die Schleife....
while(time.getTicks() < 1000.0f/framerate)
Behandelt die notwendigen Window Handle wie z.b. Das beenden des Fensters.
Damit man nicht warten müss bis die Schleife beendet wird, wird das in der Schleife gemacht.
Die Schleife wird so lange durch geführt bis....
time.getTicks()
Die aktuelle Zeit des Timers(in milisekunden).
kleiner ist als..
1000.0f/framerate
1000 Milisekunden / Bild pro Sekunde,(1 Frame).
Das heißt die Schleife läuft die Zeit eines Frames durch und dann geht es zum Rendern(Bilder anzeigen).
Dann startet der Timer wieder von vorne und wartet wieder auf eine Frame.
So wird nur maximal jede 1/60 Sekunde gerendert.