Это, как я справиться с игровым циклом:Игра SDL/OpenGL работает слишком быстро на экране 144 Гц; не можешь использовать 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();
}
Он предназначен, чтобы быть фиксированной временным шаг игры заблокирован 60 кадров в секунду (это переделано эмуляция из игры SNES), однако он работает на 144 timestep на моем экране 144hz, делая это слишком быстро. Vsync не может решить это, так что может?
Возможно, не называть 'update (dt);' на каждой итерации. –
почему я не должен? – Accumulator
Потому что обновление каждые 1/14 секунды слишком быстро! –