Android graphics(一) 框架 一、概要 二、軟件架構

一、概要

android graphic圖形顯示系統,android系統最核心功能之一。本文以分析graphic整體框架爲主。最終以知道圖形顯示系統如何工作爲目的。偏向於介紹基礎和概念

谷歌這張圖中有四個重要角色:要顯示的頁面、buffer queue、surfacefinger、hwcomposer

要顯示的頁面

安卓顯示的一個頁面一般包含:statusbar、app、natigationbar;這三個分別對應一個window。window render(繪製)的時候,是render在surface上的。

要顯示的頁面通過window告訴surfaceflinger創建surface來繪圖,這個surface就是一個layer(layer的核心就是buffer queue)。

顯示的主要三種方式

1、通過canvas繪製顯示,2、通過OpenGL ES渲染顯示(通過軟件或者GPU)。3、Vulkan android7.0開始NDK支持,開源2D和3D繪圖引擎

surfacefinger和HWC

surfacefinlger把layer(buffer queue)的list告知HWC(hwcomposer),HWC標記layer並告訴sufaceflinger是overlay還是OpenGL ES方式繪製。surfaceflinger得到list後只處理OpenGL ES的繪製,把這些會合成爲一個buffer queue再發給HWC。HWC最後再一起合成顯示到display上。

二、軟件架構

我們可以從此圖清楚的看到圖像渲染過程中,各個模塊的一個關係圖。

第一條路:和第一節概要中的流程一樣,普通頁面都是通過window繪製到surface

第二條路:非系統普通組件提供的方式會直接和native層的surface交互,直接提供buffer data

不管數據流怎麼形成,最後流到surfaceflinger配置HWC統一渲染出圖形

本文以理清整個圖形架構脈絡爲核心,本文暫未完成,還會繼續更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章