Выполнять только на определенных кадрах в SFML

Я все еще довольно новичок в SFML, и сейчас я пытаюсь сделать простую игру на плоскости прокрутки. У меня есть большинство основных вещей, но я начинаю замечать, что экран выглядит медленным. Я использую функцию window.setFrameRateLimit, чтобы результат перемещения был одинаковым на всех компьютерах, но это приводит к случайным скачкам лага во время выполнения программы. Я думаю, что это происходит из-за ограничения частоты кадров и из-за того, как это происходит. Есть ли другой лучший способ, чтобы программа выполнялась только в определенное время? В идеале, он также будет двигаться с той же скоростью на медленных компьютерах.

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);
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]