Android圖形顯示系統(tǒng)
定 價(jià):¥69
中 教 價(jià):¥40.71 (5.90折)
庫(kù) 存 數(shù): 0
本書(shū)主要介紹Android圖形顯示系統(tǒng)。首先介紹圖形顯示系統(tǒng)的框架;然后在對(duì)圖形顯示系統(tǒng)有一個(gè)整體認(rèn)識(shí)的基礎(chǔ)上,重點(diǎn)介紹每個(gè)圖形組件的工作原理;最后介紹輸入,輸入與顯示結(jié)合在一起才能實(shí)現(xiàn)用戶(hù)與計(jì)算機(jī)的交互。全書(shū)共分7章。第1章介紹圖形顯示系統(tǒng)的框架;第2章介紹圖形顯示系統(tǒng)涉及的進(jìn)程間通信方式;第3章介紹硬件抽象層的圖形組件;第4章介紹圖形流消費(fèi)者處理圖形緩沖的流程;第5章介紹窗口位置管理服務(wù)的內(nèi)容;第6章介紹圖形流的生產(chǎn)過(guò)程;第7章介紹輸入。本書(shū)適合作為高等院校計(jì)算機(jī)、軟件工程及相關(guān)專(zhuān)業(yè)本科生、研究生的參考資料,也可供有Android基礎(chǔ)的軟件開(kāi)發(fā)者參考。
本書(shū)從框架和流程兩個(gè)角度介紹圖形顯示系統(tǒng),配合示例和全彩圖解輔助讀者學(xué)習(xí)。
圖形顯示系統(tǒng)在計(jì)算機(jī)、智能手機(jī)的普及過(guò)程中發(fā)揮著重要作用。早期的計(jì)算機(jī)只能通過(guò)命令行的方式進(jìn)行交互,需要用戶(hù)熟悉各種命令,這對(duì)于普通用戶(hù)而言難度比較大。后來(lái)出現(xiàn)了支持圖形顯示系統(tǒng)的操作系統(tǒng),用戶(hù)與計(jì)算機(jī)之間通過(guò)圖形的方式進(jìn)行交互,大大降低用戶(hù)使用計(jì)算機(jī)的難度,使得普通用戶(hù)也可以用計(jì)算機(jī)完成特定任務(wù),如玩游戲、看電影等。在以圖形方式交互的系統(tǒng)中,軟件開(kāi)發(fā)者需要為應(yīng)用開(kāi)發(fā)各種圖形界面,掌握?qǐng)D形顯示系統(tǒng)更容易優(yōu)化圖形界面的交互體驗(yàn)。圖形顯示系統(tǒng)是一個(gè)非常復(fù)雜的系統(tǒng),涉及的模塊比較多,而且很多模塊偏底層,通過(guò)閱讀代碼很難掌握其中的知識(shí)點(diǎn)。筆者主要從事Android系統(tǒng)方面的開(kāi)發(fā)工作,在工作中常常遇到與顯示相關(guān)的問(wèn)題,為了更好地處理這些問(wèn)題,對(duì)Android的圖形顯示系統(tǒng)進(jìn)行了系統(tǒng)性的學(xué)習(xí),經(jīng)過(guò)長(zhǎng)時(shí)間的研究、摸索才有了一定程度的理解。為了使讀者能更輕松、容易地了解圖形顯示系統(tǒng)方面的知識(shí),筆者把相關(guān)的知識(shí)點(diǎn)整理出來(lái),編寫(xiě)了本書(shū)。本書(shū)從框架和流程兩個(gè)角度對(duì)圖形顯示系統(tǒng)進(jìn)行介紹。從框架開(kāi)始認(rèn)識(shí)圖形顯示系統(tǒng)的全貌,在此基礎(chǔ)上學(xué)習(xí)框架中各個(gè)圖形組件的工作流程。由于流程比較多,本書(shū)只對(duì)關(guān)鍵的流程進(jìn)行重點(diǎn)介紹。為了幫助讀者更容易地理解其中的知識(shí)點(diǎn),筆者會(huì)結(jié)合簡(jiǎn)單的示例逐步展開(kāi)介紹,分析示例背后的工作流程,同時(shí)配有大量的圖例。本書(shū)共分為7章,各章的主要內(nèi)容如下。第1章,從整體上認(rèn)識(shí)圖形顯示系統(tǒng)的框架,了解圖形顯示系統(tǒng)需要掌握哪些內(nèi)容。第2章,介紹圖形顯示系統(tǒng)涉及的3種進(jìn)程間通信方式,分別為Binder、共享內(nèi)存和套接字。本章是學(xué)習(xí)圖形顯示系統(tǒng)的基礎(chǔ)。第3章,介紹硬件抽象層的圖形組件的功能及其工作流程。第4章,介紹圖形流消費(fèi)者的工作原理,主要介紹將多個(gè)圖形緩沖合成到幀緩沖的過(guò)程。第5章,介紹窗口位置管理服務(wù)的內(nèi)容,包括如何創(chuàng)建和管理窗口。第6章,介紹圖形流生產(chǎn)者的工作原理,主要介紹2D圖形、3D圖形的生產(chǎn)和顯示過(guò)程。第7章,介紹圖形窗口響應(yīng)輸入事件及輸入法輸入文字的流程。
本書(shū)之所以選擇Android系統(tǒng),是因?yàn)樗悄壳爸悄苁謾C(jī)主流的操作系統(tǒng),并且是開(kāi)源的,其源碼便于研究。本書(shū)基于Android 9基線(xiàn),因此讀者在閱讀本書(shū)時(shí)需要下載AOSP(Android Open Source Project)源碼,還需要準(zhǔn)備一臺(tái)裝有Ubuntu系統(tǒng)的計(jì)算機(jī),用于對(duì)源碼進(jìn)行編譯,編譯之后在模擬器上運(yùn)行,方便對(duì)底層的源碼進(jìn)行跟蹤學(xué)習(xí)。為了更好地理解本書(shū)的內(nèi)容,讀者需要先了解Android的基本概念,掌握C、C 和Java等編程語(yǔ)言的基本語(yǔ)法。全書(shū)由李先儒編寫(xiě),在編寫(xiě)過(guò)程中得到梁云俠的大力支持,在此表示衷心的感謝。本書(shū)的內(nèi)容基于筆者個(gè)人的理解寫(xiě)就,且筆者水平有限,書(shū)中難免會(huì)有不當(dāng)之處,歡迎廣大同行和讀者批評(píng)指正。
李先儒2023年8月
第1章 緒論/11.1 簡(jiǎn)介/11.2 圖形顯示系統(tǒng)框架/1第2章 進(jìn)程間通信/42.1 簡(jiǎn)介/42.1.1 定義/42.1.2 必要性/52.1.3 實(shí)現(xiàn)方法/62.2 Binder/72.2.1 示例/72.2.2 框架/82.2.3 Binder驅(qū)動(dòng)/92.2.4 服務(wù)管理進(jìn)程/122.2.5 服務(wù)進(jìn)程/172.2.6 客戶(hù)進(jìn)程/292.2.7 示例回顧/312.2.8 線(xiàn)程池/322.2.9 Java Binder/342.2.10 文件描述符/352.2.11 通信模式/362.2.12 使用場(chǎng)合/372.3 共享內(nèi)存/382.3.1 簡(jiǎn)介/382.3.2 實(shí)現(xiàn)方法/382.3.3 使用場(chǎng)合/392.4 套接字/392.4.1 簡(jiǎn)介/392.4.2 使用場(chǎng)合/402.5 本章小結(jié)/40第3章 圖形硬件/413.1 硬件抽象層/413.1.1 作用/413.1.2 接口定義/413.1.3 使用示例/423.2 硬件抽象層接口定義語(yǔ)言/453.2.1 背景/453.2.2 使用方法/463.2.3 進(jìn)程間通信方式/483.3 Gralloc/483.3.1 簡(jiǎn)介/483.3.2 接口定義/493.3.3 分配圖形緩沖流程/503.3.4 圖形緩沖/513.4 Hardware Composer/533.4.1 簡(jiǎn)介/533.4.2 接口定義/533.4.3 硬件混合渲染器合成/563.4.4 圖形庫(kù)合成/603.5 本章小結(jié)/61第4章 圖形流消費(fèi)者/624.1 簡(jiǎn)介/624.1.1 SurfaceFlinger初始化/624.1.2 客戶(hù)進(jìn)程與SurfaceFlinger交互/634.1.3 SurfaceFlinger與硬件抽象層交互/644.2 圖層/644.2.1 創(chuàng)建圖層/644.2.2 緩沖圖層/674.2.3 圖形的生產(chǎn)與消費(fèi)/694.3 VSync/724.3.1 簡(jiǎn)介/724.3.2 作用/734.3.3 基本流程/744.4 圖形合成/794.4.1 合成原理/794.4.2 紋理/804.4.3 混合/844.4.4 渲染引擎/844.4.5 合成流程/874.5 本章小結(jié)/91第5章 窗口位置管理/925.1 簡(jiǎn)介/925.1.1 WMS/925.1.2 客戶(hù)進(jìn)程與WMS交互/935.1.3 WMS與SurfaceFlinger交互/945.2 窗口/945.2.1 創(chuàng)建窗口/945.2.2 窗口容器/955.2.3 控制窗口/965.3 窗口容器樹(shù)/975.3.1 DisplayContent/975.3.2 DisplayChildWindow Container/995.3.3 TaskStack/1005.3.4 Task/1015.3.5 AppWindowToken/1025.3.6 WindowState/1035.3.7 SurfaceControl/1045.4 窗口切換/1065.4.1 切換原理/1065.4.2 切換動(dòng)畫(huà)/1075.4.3 切換流程/1075.5 本章小結(jié)/113第6章 圖形流生產(chǎn)者/1146.1 生產(chǎn)環(huán)境/1146.1.1 啟動(dòng)流程/1146.1.2 設(shè)置內(nèi)容視圖/1166.1.3 設(shè)置根視圖/1186.1.4 初始化圖形庫(kù)/1186.1.5 請(qǐng)求VSync信號(hào)/1196.2 2D圖形/1196.2.1 視圖/1196.2.2 生產(chǎn)流程/1206.3 3D圖形/1256.3.1 示例/1256.3.2 生產(chǎn)流程/1266.4 本章小結(jié)/133第7章 輸入/1347.1 輸入系統(tǒng)/1347.2 輸入管理/1347.2.1 輸入管理框架/1347.2.2 啟動(dòng)過(guò)程/1357.2.3 讀取事件/1377.2.4 分發(fā)事件/1407.2.5 建立連接通道/1417.2.6 分發(fā)到目標(biāo)進(jìn)程/1427.2.7 在視圖樹(shù)中分發(fā)/1447.2.8 處理事件/1457.3 輸入法/1467.3.1 輸入法框架/1477.3.2 初始化服務(wù)/1477.3.3 啟動(dòng)應(yīng)用/1497.3.4 顯示應(yīng)用界面/1497.3.5 觸摸輸入框/1507.3.6 輸入內(nèi)容/1527.4 本章小結(jié)/152附錄A Binder通信示例/153附錄B 共享內(nèi)存與套接字示例/156附錄C 紋理示例/163