Maximale Framezahl festlegen
-
Ich habe folgenden Programmcode geschrieben, der so aufgebaut ist:
while ( ... ) { start = clock(); ObjektManipulieren(); // Wird ca. alle 1000 Clocks ausgeführt while ( end-start < 1000 ) { AusgabeBildschirm(); if ( kbhit() ) { // reagiere auf Eingaben } end = clock(); } }
Ich möchte jetzt, dass die Funktion AusgabeBildschirm() nur 25 mal (maximal) pro Sekunde in regelmäßigen Abständen ausgeführt wird.
Mir fehlt gerade irgendwie die Logik dazu.Für Hinweise wäre ich sehr dankbar!
-
Schau doch einfach, ob Δt ein entsprechendes vielfaches ist.
-
öh.
void foo() { unsigned now = clock(); unsigned last = now; unsigned bar_timer = 0; for(;;) { now = clock(); unsigned delta_time = now - last; // limit framerate to ~25fps while (delta_time < 40) { wait_some(); now = clock(); delta_time = now - last; } last = now; // check for input every frame if (kbhit()) { // ... } // call bar every 1000 ms bar_timer += delta_time; while (bar_timer >= 1000) { bar(); bar_timer -= 1000; } /* alternate version: if (bar_timer >= 1000) { bar(); bar_timer = 0; } */ display_frame(); } }