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