Я программирую игру на C ++, и у меня возникают проблемы с созданием способа, чтобы игра обновлялась только 60 раз в секунду. Код, который я написал, выглядит так, как будто он должен работать, но частота кадров фактически составляет 44 кадра в секунду вместо 60.
const int FRAMES_PER_SECOND = 60;
const int FRAME_CONTROL = (1000 / FRAMES_PER_SECOND);
double lastFrameTime;
double currentFrameTime;
void GameLoop()
{
currentFrameTime = GetTickCount();
if ((currentFrameTime - lastFrameTime) >= FRAME_CONTROL)
{
lastFrameTime = currentFrameTime;
// Update Game.
}
}
Так что да, это должно быть 60 кадров, но на самом деле оно работает на 44. И класс, который я использую для подсчета частоты кадров, отлично работает в других программах, которые уже имеют ограниченную частоту кадров.
Есть идеи, в чем проблема?
Это из-за разрешения getTickCount
, Эта функция дает разрешение только 10-16 мс Microsoft GetTickCount ()
Других решений пока нет …