Android Graphics Internals
-
14-10-2019 - |
Вопрос
Я не нашел четкого объяснения о том, как работает Android Graphics System, в частности, использует ли он сервер дисплея, основан на DirectFB или X11 и т. Д.
Из того, что мне удалось собрать вместе, Android зависит от Linux Frame Buffer. Анкет Я мало что нашел на том, какой сервер отображения или Университетский менеджер Android использует для мультиплекса доступа к кадру, так что любые указатели будут высоко оценены!
Наконец, из того, что я понимаю, набор инструкций ARM предоставляет инструкции по ускорению OpenGL, но то, как это интегрируется с сервером отображения, неясно, т.е. Клиентские приложения переговоры об общей буфер памяти, в который клиент пишет напрямую?
Являются ли библиотеки OpenGL для Accelerator Platform Accelerator Open Source? Я нашел некоторые ссылки, предполагающие, что они двоичные файлы с закрытым исходным кодом. Опять же, любые указатели будут оценены.
Решение
Есть две основные части Android Graphics: Surfaceflinger и Skia. Surfaceflinger - это композитор Android, используемый Window Manager для создания и отображения Windows (на самом деле называемых поверхностями.) SurfaceFlinger реализован на вершине OpenGL ES 1.x в настоящее время, а также может использовать другие методы аппаратного ускорения, когда доступно (MDP, 2D Blitter On On On On On On On T-Mobile G1 или аппаратные накладывания на Xoom.)
Каждое приложение отображается в свои окна (или поверхности), используя в основном Skia. Skia - 2D -графическая библиотека Android. Вы также можете использовать OpenGL ES 1.x и 2,0, чтобы представить в поверхность.
Android не использует DirectFB или X11 или любое другое существующее решение Linux.
Другие советы
Существует краткое представление о Android Graphics: http://www.slideshare.net/jserv/design-and-concepts-ofndroid-graphics
Роман Гай был определенно прав. Но вещь изменилась с момента Android 3.0. Skia больше не так важна, большинство двухмерных чертежей ускоряются с помощью OpenGL, он же компонент HWUI.
Вся информация о Android Graphics можно найти здесь: