Использует ли Android SurfaceView обычные вызовы openGL es?

в настоящее время я переключился с использования glSurfaceView на SurfaceView для своего приложения. Однако я блуждал, если внутренний процесс SurfaceView просто использует вызовы opengles, которые использовались в glSurfaceView

Например, в glSurfaceView вы должны указать диапазон значений с плавающей запятой между (0,0`1,0) для координат uv

Однако в Surface View вы можете использовать Rect со значениями int, непосредственно указывающими на пиксельные координаты растрового изображения. это кажется более эффективным, однако, если координаты должны быть впоследствии преобразованы в числа с плавающей запятой, чтобы соответствовать функции opengles, это будет пустой тратой обработки, верно?

Я просто новичок, просто хочу знать, как все это работает внутри.


person NamHo Lee    schedule 05.07.2015    source источник


Ответы (2)


Он использует те же вызовы OpenGL ES, если вы используете те же вызовы OpenGL ES. GLSurfaceView — это всего лишь библиотека классов, обертывающая SurfaceView и выполняющая за вас настройку EGL и управление потоками. Вы можете самостоятельно использовать GLES с SurfaceView (примеры см. в разделе Grafika).

Если вы рисуете на поверхности SurfaceView с Canvas, то вы выполняете рендеринг в программном обеспечении с библиотекой Skia, а OpenGL ES вообще не участвует.

Если вы рисуете в пользовательском представлении с Canvas, то может быть задействовано аппаратное ускорение, а ваши вызовы рисования Canvas выполняются GLES. Преобразование координат между числовыми форматами является одной из наименее затратных частей операции.

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

person fadden    schedule 05.07.2015

Android внутри может использовать или не использовать вызовы OpenGL с поверхностным представлением. Существует один программный рендерер под названием SKIA, доступный для Android для целей рендеринга, когда аппаратное ускорение явно отключено в приложении ИЛИ невозможно использовать аппаратное ускорение из-за размеров/формата представления и т. д.

person Abhishek Bansal    schedule 05.07.2015