2013-04-19 4 views
1

Я программирую игру на C++, и у меня возникли проблемы с созданием способа, так что игра обновляется только 60 раз в секунду. Код, который я написал выглядит, как он должен работать, но частота кадров фактически заканчивается в 44 кадров в секунду вместо 60.Проблема с частотой кадров в игре C++

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, а также класс, который я использую для подсчета частоты кадров, отлично работает в других программах, которые уже имеют ограниченную частоту кадров.

Любые идеи, в чем проблема?

+1

Является ли '// Update Game' способным работать менее чем за шестидесятую секунды? –

+1

Возможно ли, что ваша игра слишком интенсивна и просто не управляет 60 FPS? – Angew

+1

Да, без управления частотой кадров он будет работать со скоростью около 500 кадров в секунду. –

ответ

3

Из-за разрешения getTickCount. Эта функция дает только разрешение 10-16 мс. Microsoft GetTickCount()

+0

О, спасибо большое. Я буду читать о таймерах с высоким разрешением, если вы не знаете хороший рабочий, на который вы можете указать мне? –

+1

Вы можете включить и использовать omp_get_wtime(). Он возвращает время в секундах с очень высокой точностью. – Petter

+0

Я использую GLFW, и он включает таймер с высоким разрешением. – aardvarkk

Смежные вопросы