Как измерить истинную производительность FPS OpenGL ES? - PullRequest
5 голосов
/ 05 июля 2011

Я понял, что это две разные вещи:

Рисование и вывод на экран.

Таким образом, хотя вы можете рисовать при каждом вызове из CADisplayLink со скоростью 60 кадров в секунду, если ваши операции рисования занимают чуть больше 1/60 секунды, вы в теории получаете 30 кадров в секунду, потому что вы упускаете все остальные шанс пройти через конвейер рендеринга.

OK; Зная это, кажется бессмысленным запоминать начальный NSTimeInterval и увеличивать счетчик кадров в цикле выполнения, а затем проверять в конце, прошла ли секунда, и вычислять FPS для последней прошедшей секунды.

Мне нужен способ получить истинное значение FPS от OpenGL ES на экране. Я посмотрел на инструменты в Xcode 3.2.6, но не смог найти для этого. Но я помню, что был способ получить это значение FPS. Настоящий.

Как?

1 Ответ

13 голосов
/ 05 июля 2011

Измерение производительности OpenGL ES по частоте кадров может быть не лучшим подходом . Я сам занялся записью времени кадра, что, кажется, дает более точную оценку моей общей производительности рендеринга. Это просто для инкапсуляции вашего рендеринга в нечто вроде

CFTimeInterval previousTimestamp = CFAbsoluteTimeGetCurrent();

// Do your OpenGL ES frame rendering here, as well as presenting the onscreen render buffer

CFTimeInterval frameDuration = CFAbsoluteTimeGetCurrent() - previousTimestamp;
NSLog(@"Frame duration: %f ms", frameDuration * 1000.0);

для получения времени рендеринга. Если вы хотите, ваша мгновенная частота смены кадров равна frameDuration в приведенном выше коде.

Будьте внимательны, чтобы рассчитать время рендеринга всего кадра, поскольку отложенный рендерер на основе плиток в iOS и других мобильных устройствах может скрывать истинную стоимость отдельных операций рендеринга, задерживая их до того, как кадр будет выведен на экран.

Однако, если вы хотите получить менее точную частоту кадров из Инструментов, вы можете сделать это, используя инструмент OpenGL ES Driver, который сообщает Core Animation Frames Per Second как одну из его зарегистрированных статистик:

OpenGL ES Driver instrument

...