Как рассчитать FPS в OpenGL?

void CalculateFrameRate()
{    
    static float framesPerSecond    = 0.0f;       // This will store our fps
    static float lastTime   = 0.0f;       // This will hold the time from the last frame
    float currentTime = GetTickCount() * 0.001f;    
    ++framesPerSecond;
    if( currentTime - lastTime > 1.0f )
    {
        lastTime = currentTime;
        if(SHOW_FPS == 1) fprintf(stderr, "nCurrent Frames Per Second: %dnn", (int)framesPerSecond);
        framesPerSecond = 0;
    }
}

должен ли я вызывать эту функцию в void play(void) или void display(void)?

или это не имеет никакого значения?

2 ответов


вы должны поместить его в цикл отображения. здесь статья, которая объясняет некоторые тонкости игровые циклы, которые вы должны прочитать.


Если у вас есть какая-либо процедура синхронизации, я предлагаю вам разместить вызов сразу после этого, т. е. до больших вычислений. В противном случае расчет времени может быть хлипкая и дают различные значения каждому циклу...и заметьте, лучше иметь устойчивый FPS, чем колеблющийся FPS, чтобы максимизировать его. Колебания, даже столь тонкие, заставляют зрителя/игрока осознавать, что это все игра, и погружение теряется.