97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠(yuǎn)見教育科技集團(tuán) >> 新聞動態(tài) >> Android資料 >> Android Surface Flinger 服務(wù)器概述  
 
Android Surface Flinger 服務(wù)器概述
分享到:

在Android中,渲染主要是通過Android渲染管理器Surface Flinger來管理的。Surface Flinger通過管理一系列的Surface并對Surface進(jìn)行組合,然后借助Skia和OpenGL ES來完成終的渲染操作,Surface Flinger使Android的渲染機(jī)制顯得十分出色。

Android的圖形系統(tǒng)同樣采用了C/S架構(gòu)的機(jī)制,服務(wù)器(Surface Flinger)端代碼主要由C++編寫,客戶端代碼則分為兩個部分,一部分為Java編寫的供應(yīng)用調(diào)用的API,另一部分(SurfaceComposerClient)為C++完成的底層原生實現(xiàn)。Surface Flinger框架如圖-1所示。


圖-1 Surface Flinger框架

Android圖形系統(tǒng)中一個重要的概念就是Surface。每個Surface都會創(chuàng)建一個畫布(Canvas)對象,每個畫布對象都對應(yīng)于一個位圖(Bitmap)對象,該位圖對象存儲著視圖(View)及其子類等UI控件畫在Surface上的內(nèi)容。

在通常情況下,每個Surface對應(yīng)著兩個緩沖:前端緩沖(Front Buffer)和后端緩沖(Back Buffer)。其中后端緩沖即在畫布對象上渲染信息時,畫布對象對應(yīng)的那個位圖對象。

應(yīng)用通過SurfaceView、ViewRoot等創(chuàng)建Java Surface(同時創(chuàng)建Canvas),并將圖形繪制到Surface對象上,終渲染到屏幕。

Java Surface通過Java JNI調(diào)用原生 Surface來實現(xiàn)Java Surface 的功能。

原生Surface創(chuàng)建這個ISurface (BnSurface)并發(fā)送命令,如更新Surface內(nèi)容到屏幕上。Server端接受這個命令并執(zhí)行相應(yīng)操作。

每個Surface對應(yīng)一個層(Layer)對象,Surface Flinger負(fù)責(zé)將各個層對象的前端緩沖組合并渲染到屏幕上。

多個 Layer 構(gòu)成一個層向量 LayerVector ,它包含了當(dāng)前所有 Surface 對應(yīng)的 Layer。Surface Flinger 根據(jù)每個 Layer 的 Z序(Z-order) 把多個Layer組合為一個終在屏幕上顯示的緩沖 。

Z 序?qū)嶋H定義了窗口之間的層疊順序。說起“Z序”這個名稱,實際是相對屏幕坐標(biāo)而言的。一般而言,屏幕上的所有窗口均有一個坐標(biāo)系,即原點在左上角,X軸水平向右,Y軸垂直向下的坐標(biāo)系。Z序是相對于一個假想的Z軸而言的,這個 Z 軸從屏幕外指向屏幕內(nèi)。窗口在這個 Z 軸上的值,就確定了其 Z 序。Z序值大的窗口,覆蓋了Z序值小的窗口。

在LayerVector里每個Layer都對應(yīng)一個 Z 序值,同時通過給Layer設(shè)定優(yōu)先級的方式,使得某些Layer可以實現(xiàn)前端顯示,后通過相應(yīng)的裁剪算法來計算可以被顯示的區(qū)域。

圖-2從依賴關(guān)系層面詳細(xì)地展現(xiàn)了Surface、Layer、Surface Flinger的關(guān)系。


圖-2 Surface Flinger的類圖

 更多相關(guān)文章

·Android 屬性動畫開發(fā)源碼
·Android系統(tǒng)層次結(jié)構(gòu)及分析
·Android平板電腦的設(shè)計
·Android本地服務(wù)的啟動
·Android項目的mvc模式