2013-06-29 3 views
1

У меня бесконечный цикл в моей ленте рендеринга. Я попытался измерить, полагая, что каждый вызов eglSwapBuffers рисует новый кадр, но это дает мне результаты, такие как 200 кадров в секунду, что невозможно, не так ли? Частота обновления не может превышать 60?Как измерить FPS приложения Android, использующего TextureView? (Я использую OpenGL)

Теперь я делаю то же самое, но также используя surfaceTexture.getTimeStamp() поверхностиTexture SurfaceView. Я считаю, что кадр был создан только в том случае, если временная метка, возвращаемая в предыдущей итерации, не такая же, как в текущем. Является ли приемлемый способ измерения? Это показывает 50-55 кадров в секунду, когда я не рисую. т.е. цикл имеет только eglSwapBuffers() и вызовы getTimeStamp.

ответ

0

surfaceTexture.getTimeStamp(), кажется, дает правильный результат. Я тестировал его, добавляя все различия между результатами, возвращаемыми последовательными вызовами getTimeStamp(), и он равен общему времени, в течение которого выполнялся код. Это указывает на то, что никакие рамки не считаются нерассмотренными и т. Д.

Другое решение, которое я нашел, - this Android app. Я не знаю, как это работает, но дает примерно те же результаты, что и вышеупомянутый метод.