這是我如何處理遊戲循環:SDL/OpenGL遊戲在144Hz屏幕上運行速度太快;不能使用VSYNC
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無法解決這個問題,那麼可以做什麼?
也許在每次迭代時都不要調用update(dt);' –
爲什麼我不應該? – Accumulator
因爲每秒更新一次/ 144秒就太快了! –