Частота кадров OpenGL

Как лучше всего измерить частоту кадров моей программы OpenGL?


person Mike2012    schedule 02.09.2009    source источник


Ответы (4)


Измерьте прошедшее время и подсчитайте количество кадров. Разделите одно на другое, чтобы получить частоту кадров.

Когда прошедшее время достигнет одной секунды или больше, если вы хотите усреднить его за более длительный период времени, сбросьте оба счетчика и начните заново.

person jcoder    schedule 02.09.2009
comment
Если я использую переполнение и делаю этот вызов glutIdleFunc(oneFrame); Я предполагаю, что oneFrame будет вызываться каждый кадр, это правильно? - person Mike2012; 03.09.2009
comment
Я так думаю, но я не знаком с перенасыщением - person jcoder; 03.09.2009

Установите таймер в начале основного цикла и проверьте, сколько времени потребуется, чтобы вернуться туда.

Под окнами вы бы сделали что-то вроде:

double oldTime  = 0.0.
while( !exit )
{
    __int64 counter;
    QueryPerformanceCounter( (LARGE_INTEGER*)&counter );

    __int64 frequency;
    QueryPerformanceFrequency( (LARGE_INTEGER*)&frequency );

    double newTime      = (double)counter / (double)frequency;
    double frameRate    = 1.0 / (newTime - oldTime);
    oldTime         = newTime;

    // Rest of your game loop goes here.    
}
person Goz    schedule 02.09.2009
comment
То, что я сказал, только с фактическим кодом, поэтому +1 (хотя это предполагает окна...) - person jcoder; 03.09.2009
comment
Не то чтобы он упомянул платформу или язык... так что пора гадать ;) - person Goz; 03.09.2009

SPF (секунды на кадр) чуть более информативная метрика.

person genpfault    schedule 03.09.2009

Если вы используете Windows, просто используйте Fraps.

http://www.fraps.com/

person seveland    schedule 22.09.2011