Я пишу приложение для 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 мс.
- отключил большинство других вещей, которые делает мое приложение.
Я провел два других эксперимента:
- Отключил предварительный просмотр камеры, комментируя Camera.startPreview () ==> получил 30,3 кадров в секунду .
- (1) + Установите видимость поверхности предварительного просмотра камеры на НЕВИДИМ. ==> получил 59,94 кадров в секунду .
Кто-нибудь видел что-нибудь подобное? Это какое-то ограничение с устройством htc (аппаратное обеспечение)? Любые идеи о том, что еще я могу сделать, чтобы отладить эту проблему или получить более высокую частоту кадров?
Спасибо!
Edit:
другая часть (вероятно, бесполезная) информации: когда я запустил это OpenGL Frame Test Test на моем htc, оно показало 60fps ...