这就是我处理游戏循环的方式:
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 不能解决这个问题,那有什么办法呢?