Wie wartet man eine Sekunde ?

Hallo Experten !

Ich möchte in einem OpenGL-Programm die Szenerie im Sekundentakt ablaufen lassen. Wie macht man das am geschicktesten ? Im Moment sieht das bei mir so aus:

#include
#include


draw_scene(); //Pseudo-Code

clock_t now=clock();
while((clock()-now)/CLOCKS_PER_SEC

Hallo Hendrik,

vor allem ist es unkooperativ gegenüber den anderen Usern/Programmen, eine Wartezeit aktiv zu verbringen, etwa durch Zählen oder Abfragen, anstatt die Rechenzeit freizugegebn. Jedes Multitasking-BS stellt Mittel bereit, im einfachsten Fall gibt es eine sleep()-Funktion, und zwar in jeder Sprache.

Bei einem ohnehin ereignisgesteuerten System wie Windows verwendet man am zweckmässigsten Timer-Events. Man startet einen Timer mit der Zeitbasis 1 sec und zeichnet das Fenster innerhalb der Service-Routine, die vom Timer ausgelöst wird.

Damit das so synchron wie möglich funktioniert, sollte man die Szene so schnell wie möglich aufgrund vorhandener Daten ausgeben und anschliessend erst die Daten für die folgende Sekunde berechnen, oder man verwendet gleich 2 Threads mit Synchronisierung; dann würde es auch mit 2 Prozessoren funktionieren.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]