日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android圖形子系統(tǒng)詳解

圖形操作可以有兩種方式實(shí)現(xiàn):一是利用通用CPU模擬圖形操作;二是利用GPU專門做圖形操作。前者會增加CPU的負(fù)擔(dān),在現(xiàn)在高分辨率已經(jīng)是普遍現(xiàn)象的時候,讓通用處理器來完成大量的圖形計算已經(jīng)不現(xiàn)實(shí)。Android圖形系統(tǒng)的發(fā)展過程也驗(yàn)證了這一觀點(diǎn)。

目前成都創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站運(yùn)營、企業(yè)網(wǎng)站設(shè)計、瀘水網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

為了達(dá)到高效的圖形處理效果,是必須緊密結(jié)合軟件和硬件的。這篇文章主要介紹跟Android的圖形子系統(tǒng)。以后可能會對這些主題進(jìn)行更加深入的探討。

Android圖形系統(tǒng)的軟件構(gòu)成

下面的示意圖,展示了Android上負(fù)責(zé)圖形處理的軟件模塊。

一個典型Android應(yīng)用中各個圖形系統(tǒng)組件的關(guān)系圖

GPU:

GPU專門設(shè)計用于加速圖形操作。GPU不同于CPU,它的一個設(shè)計目的就是高度的并行化,并行化是大部分圖形計算的共同特征。

Android 剛剛問世的時候,GPU還是可選的,最近發(fā)布的版本中,GPU已經(jīng)是一個必配硬件。如果系統(tǒng)中沒有GPU,系統(tǒng)使用的OpenGL ES就包含了libagl和pixelflinger,通過軟件實(shí)現(xiàn)OpenGL ES協(xié)議接口,有時也有硬件支持的CopyBit。但是不幸的是,Android通過軟件模擬OpenGL,并不支持OpenGL ES 2.0?,F(xiàn)在,Android系統(tǒng)中的不少組件使用了OpenGL ES 2.0,比如HWUI、Renderscript、SurfaceTexture。平板電腦都有很高的分辨率,純軟件的模擬支持并不能保證圖形的填充需 求,也就不能為用戶提供流暢的UI體驗(yàn)。廠商如果想制造基于ICS或者更高版本Android系統(tǒng)的設(shè)備,就必須具有支持OpenGL ES 2.0 的GPU。

Canvas:

畫布是應(yīng)用程序用來繪制Widget或圖形等元素的地 方。Froyo和Gingerbread上,畫布通過Skia來繪制。Honeycomb及以后的版本,HWUI被加入了進(jìn)來,提供了GPU加速支持。在 Ice Cream Sandwich及以后的版本上,HWUI缺省用于圖形的繪制。

Skia:

Skia是一組2D繪圖的API,它完全通過軟件實(shí)現(xiàn)。由于性能方面的原因,Skia逐漸被HWUI所替代。

HWUI

HWUI 可以使UI組件使用GPU加速。HWUI是在Honeycomb中引入進(jìn)來的,目的是使交互更加快速,及時響應(yīng),流暢。在大分辨率的平板電腦上,通過 Skia來繪制動畫,會占用很高的CPU資源,進(jìn)而拖慢整個系統(tǒng)。HWUI需要支持OpenGL ES 2.0的GPU,不能通過軟件模擬。

Renderscript

Renderscript 同樣也是Honeycomb引入的新的API,它的設(shè)計為了同時解決移植和性能問題。應(yīng)用程序員用Renderscript(基于C99)編寫代碼,然后 一個LLVM的交叉編譯器把它編譯為機(jī)器獨(dú)立的bit code,應(yīng)用程序員再將其打包到apk中。當(dāng)用戶下載apk時,設(shè)備上的編譯器(基于LLVM,位于/system/lib/libbcc.so)將 bit code編譯為目標(biāo)機(jī)器上的指令。

Renderscript在Froyo和Gingerbread上也存在,但是不是公開的API。只有Android的一些wallpaper使用了它。那時它的實(shí)現(xiàn)也非常粗糙,功能有限。

Surface:

一 個Surface對應(yīng)一個屏幕外緩沖區(qū),應(yīng)用程序用來渲染窗口內(nèi)容。一個游戲程序,它可能使用OpenGL在Surface上繪制3D對象,一個普通應(yīng)用 程序,它可能使用Skia來繪制Widget或者文本,它也可能使用HWUI庫來啟用GPU加速。從ICS開始,Surface通過一個后端的 SurfaceTexture實(shí)現(xiàn),這就意味著Surface對應(yīng)的不再是一個緩沖區(qū),而是一個紋理(texture)。

Android平臺的圖形棧

SurfaceFlinger:

SurfaceFlinger是一個合成器,它管理來自于不同應(yīng)用的Surface。比如,可能有許多應(yīng)用同時存在,與此對應(yīng)的,存在許多獨(dú)立的Surface需要被渲染。SurfaceFlinger決定屏幕上顯示的內(nèi)容,那些需要被覆蓋,進(jìn)行裁剪。

SurfaceFlinger使用的是OpenGL ES 1.1標(biāo)準(zhǔn)中的函數(shù)。為什么呢?如果使用OpenGL ES 2.0,就必須需要支持OpenGL ES 2.0的硬件GPU,這會使系統(tǒng)的啟動更加復(fù)雜,也會使模擬器的實(shí)現(xiàn)更加困難。

HW Composer:

硬件合成器是Honeycomb引入的一個HAL,SurfaceFlinger使用它,利用硬件資源來加速Surface的合成,比如3D GPU和2D的圖形引擎。

CopyBit:

CopyBit也是一個HAL。它允許使用特殊硬件來加速一些圖形操作,比如復(fù)制(blitting)。它設(shè)計的初衷是在沒有3D GPU的系統(tǒng)上加速軟件的渲染過程。CopyBit在ICS中被刪除了,因?yàn)镚PU已經(jīng)成為一個必備硬件,沒有必要專門設(shè)計一個加速部件。

Libagl/PixelFlinger:

libagl 是一個通過軟件實(shí)現(xiàn)了OpenGL ES 1.0和1.1版本API的組件。它使用PixelFlinger來實(shí)現(xiàn)OpenGL調(diào)用。為了加速使用PixelFlinger的渲染過程,JIT被引 入了進(jìn)來,稱為CodeFling。CodeFling生成機(jī)器代碼,它急劇加速了許多類型的像素操作。

可以看出,Android的圖形系統(tǒng)在不斷的調(diào)整,目的是為了提供更加快速流暢的UI體驗(yàn)。這就是Android版本中圖形相關(guān)代碼變動很大的原因。


網(wǎng)站標(biāo)題:Android圖形子系統(tǒng)詳解
文章起源:http://m.5511xx.com/article/dpesgdg.html