Вычисление частоты кадров
9.1.3. Вычисление частоты кадров
Примеры приложений к этой главе ID3DXFont и CFont вычисляют и отображают количество визуализируемых за секунду кадров (FPS). В этом разделе мы покажем как вычисляется FPS.
Сперва мы объявляем три глобальных переменных:
DWORD FrameCnt; // Количество выведенных кадров float TimeElapsed; // Прошедшее время float FPS; // Частота визуализации кадров
Мы вычисляем FPS каждую секунду; это дает нам достоверное среднее значение. Кроме того, мы храним вычисленное значение частоты кадров в течение одной секунды, что дает достаточно времени, чтобы прочитать его перед очередным изменением.
Итак, каждый кадр мы увеличиваем значение переменной FrameCnt и прибавляем к переменной TimeElapsed время, прошедшее с вывода предыдущего кадра:
FrameCnt++; TimeElapsed += timeDelta;
где timeDelta — это время, прошедшее между двумя кадрами.
После того, как пройдет одна секунда, мы вычисляем частоту кадров по следующей формуле:
FPS = (float)FrameCnt / TimeElapsed;
Затем мы обнуляем переменные FrameCnt и TimeElapsed и начинаем вычисление среднего значения частоты кадров для следующей секунды. Вот как выглядит весь код вместе:
void CalcFPS(float timeDelta) { FrameCnt++; TimeElapsed += timeDelta;
if(TimeElapsed >= 1.0f) { FPS = (float)FrameCnt / TimeElapsed; TimeElapsed = 0.0f; FrameCnt = 0; } }