これは私がゲームループを処理する方法です:
while (running) {
diff = duration_cast<milliseconds>(end - start).count();
start = clock::now();
dt = diff / (16.0);
handleInput(); // get input
update(dt); // game logic
render(); // render game
SDL_GL_SwapWindow(window); // swap frame buffer
end = clock::now();
}
これは 60FPS にロックされた固定タイムステップ ゲーム (SNES ゲームの再作成されたエミュレーションです) を意図していますが、私の 144hz 画面では 144 タイムステップで実行され、速すぎます。Vsync はこれを解決できません。