Я все еще новичок в SFML, и сейчас я пытаюсь сделать простую игру с прокруткой. У меня есть большинство основных вещей, но я начинаю замечать, что экран выглядит медленным. Я использую функцию window.setFrameRateLimit, чтобы результат перемещения был одинаковым на всех компьютерах, но во время выполнения программы возникают случайные скачки задержки. Я думаю, что это происходит из-за ограничения частоты кадров и из-за того, как он это делает. Есть ли другой лучший способ запускать программу только в определенное время? В идеале он должен двигаться с той же скоростью и на более медленных компьютерах.
Выполнять только определенные кадры в SFML
Ответы (1)
Кажется, пики задержки setFrameRateLimit были исправлены в SFML 2.0. Если вы не можете обновиться до SFML 2.0, вы можете добавить свой собственный ограничитель частоты кадров. Это включает в себя добавление sleep() к вашему игровому циклу. Например:
while(App.IsOpened()) {
float time = Clock.GetElapsedTime();
// update game
// draw game
float timeToWait = (1.0 / FRAMES_PER_SECOND) - (Clock.GetElapsedTime() - time);
if(timeToWait > 0) {
sleep(timeToWait * 1000);
}
}
person
priomsrb
schedule
16.08.2013