理解 Android 2D/3D 圖形架構

來源:互聯網
上載者:User

標籤:android

首先理解Android 的 egl 的函數調用,先要得到display (對應顯示器),而後選擇一個支援的config(這是顯卡支援的),而後建立WindowSurface, 還要建立context (context 相當於 opengl 這個狀態機器), 而後就可以調用 gl 的繪圖函數在Surface上畫圖, 工作完成後需要釋放 Context, windowSurace這些資源

 

Android 3D 圖形架構如下

當使用者使用 GLSurfaceView 的時候,會調用egl 的函數,建立出GLSurfaceView依賴 windowSurace,Context這些對象, 而後把java 的gl調用轉化為對libGL.so的native調用,libGL.so會調用到顯卡驅動


如果沒有硬體就是走軟體類比的的gl函數,值得注意的是Andoid對其中copybit作了最佳化

2D渲染

以前Android是使用skia產生2D圖形的,後來(4.1 Jellybean )為了提高效能,改為使用 opengl (因為可以可以gpu),但以前的skia軟架構依舊保留

當編譯時間開啟 USE_OPENGL_RENDER:=true,才開啟硬體加速(預設是開啟),就是libhwui.so硬體加速的實現

跟3D一樣建立Surface, 建立Context,調用gl函數繪製...

 


上面兩個架構,渲染好了Surface(不管是GPU渲染出來的,還是cpu類比渲染出來的),  SurfaceFlinger在最後上屏的時候,又調用了 opengl 的函數。也分為gpu硬體上屏,還是cpu類比



理解 Android 2D/3D 圖形架構

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.