Ich fange gerade an, OpenGL in der Schule zu lernen, und ich habe neulich angefangen, ein einfaches Spiel zu machen (allein, nicht für die Schule). Ich verwende freeglut und erstelle es in C, also habe ich für meine Spieleschleife wirklich gerade eine Funktion verwendet, an die ich mich gewöhnt habe, glutIdleFunc
um die gesamte Zeichnung und Physik in einem Durchgang zu aktualisieren. Dies war in Ordnung für einfache Animationen, bei denen mir die Framerate nicht so wichtig war, aber da das Spiel hauptsächlich auf Physik basiert, möchte ich wirklich festhalten, wie schnell es aktualisiert wird (müssen).
Daher bestand mein erster Versuch darin, meine Funktion an glutIdleFunc
( myIdle()
) zu übergeben, um zu verfolgen, wie viel Zeit seit dem vorherigen Aufruf vergangen ist, und die Physik (und derzeit die Grafiken) alle so viele Millisekunden zu aktualisieren. Früher timeGetTime()
habe ich das gemacht (mit <windows.h>
). Und das brachte mich zum Nachdenken: Ist die Verwendung der Leerlauffunktion wirklich eine gute Methode, um die Spielschleife zu durchlaufen?
Meine Frage ist, was ist ein besserer Weg, um die Spieleschleife in OpenGL zu implementieren? Sollte ich es vermeiden, die Leerlauffunktion zu verwenden?