Скорость рендеринга OpenGL (onDrawFrame) с поверхностью камеры - PullRequest
1 голос
/ 30 ноября 2011

Я пишу приложение для Android с GLSurfaceView (OpenGL ES 2.0) поверх SurfaceView, используемого для предварительного просмотра камеры в реальном времени.

Используемая версия Android: 2.3.3, скомпилирована для уровня API 8.

Я расширил GLSurfaceView.Renderer и измерил скорость вызовов onDrawFrame . На Samsung Galaxy S я получаю ~ 55.6fps, на LG G2x ~ 58.9, но на htc Sensation 4G я получаю только ~ 17-22fps .

Следующие эксперименты не не изменили эту скорость:

  • удаление ВСЕХ кодов с onDrawFrame за исключением кода измерения очень низкой скорости
  • использовал setRenderMode (GLSurfaceView.RENDERMODE_WHEN_DIRTY) и установил таймер для вызова requestRender каждые 17 мс.
  • отключил большинство других вещей, которые делает мое приложение.

Я провел два других эксперимента:

  1. Отключил предварительный просмотр камеры, комментируя Camera.startPreview () ==> получил 30,3 кадров в секунду .
  2. (1) + Установите видимость поверхности предварительного просмотра камеры на НЕВИДИМ. ==> получил 59,94 кадров в секунду .

Кто-нибудь видел что-нибудь подобное? Это какое-то ограничение с устройством htc (аппаратное обеспечение)? Любые идеи о том, что еще я могу сделать, чтобы отладить эту проблему или получить более высокую частоту кадров?

Спасибо!

Edit: другая часть (вероятно, бесполезная) информации: когда я запустил это OpenGL Frame Test Test на моем htc, оно показало 60fps ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...