Ich versuche, ein einfaches OpenGL-Spiel auf MacOS, mit einem NSTimer
einzurichten, um eine Lauf-Schleife wie erläutert here. Die Idee ist, einen Wiederholungstimer mit einem sehr kleinen (~ 1ms) Zeitintervall zu erstellen und sich auf vsync zu verlassen, um die Bildrate zu regulieren.OpenGL VSync/NSTimer Probleme auf macOS
Ich setze mein NSOpenGLContext
Auslagerungsintervall auf einen Wert von 1, der Vsync aktivieren sollte. Ich hatte den Eindruck, dass dies NSOpenGLContext.flushbuffer
blockieren würde, aber das scheint nicht der Fall zu sein. Mein Rendercode feuert viel häufiger als 60 Mal pro Sekunde.
Das Dokument, das ich verlinkt habe wurde als im Ruhestand markiert, aber alle offiziellen Dokumentation, die ich gelesen habe, deutet darauf hin, dass es möglich ist, eine NSTimer
Schleife auf die Bildwiederholfrequenz irgendwie zu drosseln. Ich konnte das nicht schaffen, und ich frage mich, ob dieser Ansatz nicht mehr praktikabel ist.
Fehle ich etwas? In einem modernen Projekt ist es besser, nur mit einem CVDisplayLink
zu gehen?