日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

5 蘋(píng)果開(kāi)發(fā)人員技術(shù)文檔連載之-系統(tǒng)架構(gòu)

【5 蘋(píng)果開(kāi)發(fā)人員技術(shù)文檔連載之-系統(tǒng)架構(gòu)】Quartz的Quartz 2D部分是提供圖形渲染服務(wù)的圖形庫(kù)之一 。它是為展現(xiàn)二維文本和圖形所設(shè)計(jì)的 。圖形和多媒體庫(kù)包括

·渲染二維圖像的QuickDraw
·既可以渲染二維圖像也可以渲染三維圖像的OpenGL
·表現(xiàn)數(shù)字視頻流和其他多媒體的QuickTime

QuickTime是一種交互式多媒體環(huán)境,具有圖形環(huán)境和應(yīng)用程序環(huán)境上的功能和特性 。盡管考慮到它在Mac OS X架構(gòu)中所處的混合狀態(tài),但是在這一節(jié)中,作為簡(jiǎn)單的概括,我們?nèi)詫阉醋鳛槭桥cQuartz 2D、QuickDraw和OpenGL地位同等的圖形庫(kù) 。

所有的渲染庫(kù)都直接依賴于Quartz的另外部分,即Quartz Compositor層 。然而,QuickTime和OpenGL卻幾乎不依賴于Quartz Compositor層,因?yàn)樗鼈冇兴鼈冏约旱哪撤N特定視窗實(shí)現(xiàn)機(jī)制 。

Quartz Compositor由Mac OS X視窗服務(wù)器和由它所實(shí)現(xiàn)的(當(dāng)前私有的)系統(tǒng)編程接口(SPI)來(lái)組成 。視窗服務(wù)器對(duì)顯示和窗口全面負(fù)責(zé),其中包括它們的合成、配置和基本管理 。同時(shí),它也執(zhí)行低級(jí)別的指針管理和事件路由 。

很大程度上Quartz是在核心圖形框架(CoreGraphics.framework)中實(shí)現(xiàn)的 。如圖3-4所示,這一框架中的動(dòng)態(tài)共享庫(kù),包含客戶端API和服務(wù)器SPI,其中服務(wù)器SPI是由視窗服務(wù)器自身實(shí)現(xiàn)的 。應(yīng)用程序或應(yīng)用程序環(huán)境與Quartz 2D庫(kù)的客戶方相鏈接,這些庫(kù)用于渲染屏幕、生成PDF和其它服務(wù) 。所有對(duì)服務(wù)器SPI的訪問(wèn)都是由客戶端API來(lái)轉(zhuǎn)交的 。

在某種程度上,Cocoa環(huán)境和Java環(huán)境為訪問(wèn)Quartz 2D和其它渲染庫(kù)提供了它們自己的編程接口 。您既可以使用Cocoa和Java接口,也可以使用在應(yīng)用服務(wù)層上的編程接口 。

這一節(jié)的余下部分所討論的是,在圖形和視窗環(huán)境下的Quartz所扮演的角色 。關(guān)于QuickDraw、QuickTime和OpenGL的概念內(nèi)容請(qǐng)參考相關(guān)的Apple開(kāi)發(fā)文檔(developer.apple.com) 。

Quartz Compositor

Mac OS X的Quartz Compositor層由視窗服務(wù)器和由視窗服務(wù)器所實(shí)現(xiàn)的(私有的)系統(tǒng)編程接口(SPI)所組成 。這一層負(fù)責(zé)對(duì)初始屏幕顯示、視窗合成與管理、事件路由和指針管理進(jìn)行響應(yīng) 。

視窗服務(wù)器是一個(gè)單獨(dú)的系統(tǒng)范圍內(nèi)的進(jìn)程,用于協(xié)調(diào)低級(jí)別的視窗動(dòng)作,并強(qiáng)制保持在屏幕上所顯示視窗的基本一致性 。它是一個(gè)輕量級(jí)的服務(wù)器,因?yàn)樗约翰荒苓M(jìn)行渲染,但可以與位于其上層的客戶圖形庫(kù)進(jìn)行通訊 。從繪畫(huà)模型方面來(lái)說(shuō),它是“不會(huì)發(fā)表意見(jiàn)的” 。

視窗服務(wù)器與其它系統(tǒng)服務(wù)和庫(kù)幾乎沒(méi)有依賴關(guān)系 。它依賴于內(nèi)核環(huán)境中的I/O Kit(尤其是,用I/O Kit構(gòu)建的設(shè)備驅(qū)動(dòng)程序),為的是與框架緩沖器、輸入設(shè)備的底層結(jié)構(gòu)和輸入輸出設(shè)備進(jìn)行通訊 。它也與核心服務(wù)的某些框架相鏈接,以獲取進(jìn)程管理服務(wù),如基本進(jìn)程的激活 。

視窗服務(wù)器的一個(gè)首要職責(zé)是視窗合成 。當(dāng)視窗在被繪制、被重畫(huà)、覆蓋和被覆蓋時(shí),由它來(lái)合成每一個(gè)應(yīng)用程序的視窗像素 。每個(gè)視窗都被描述成一幅位圖,它包括了半透明(alpha通道)和抗鋸齒信息 。位圖作為緩沖器允許視窗服務(wù)器去“記住” 一個(gè)應(yīng)用程序的視窗內(nèi)容,并在不干涉應(yīng)用程序的情況下將它進(jìn)行再合成 。然而,視窗服務(wù)器(Quartz Compositor)沒(méi)有記憶那些被圖形庫(kù)(例如Quartz 2D)用來(lái)創(chuàng)建視窗和其它圖象的矢量信息 。取而代之的是,位圖被應(yīng)用程序和視窗服務(wù)器所共享,應(yīng)用程序直接對(duì)共享位圖進(jìn)行繪畫(huà)操作,并相應(yīng)地由視窗服務(wù)器來(lái)合成該位圖 。

在它的Quartz Compositor組件中,Quartz以一個(gè)分層式的合成引擎來(lái)作為視窗系統(tǒng)的模型 。傳統(tǒng)的視窗系統(tǒng)使用"交換"模型,在這個(gè)模型中屏幕上的每一個(gè)像素完全屬于一個(gè)視窗(或桌面) 。因?yàn)檫@種模型,轉(zhuǎn)變就必然很突然;舉個(gè)例子來(lái)說(shuō),當(dāng)您關(guān)閉一個(gè)視窗時(shí),它會(huì)立刻消失 。在另一方面,一個(gè)分層式合成視窗系統(tǒng)基于“圖像(視頻)混合”模型 。在這個(gè)模型上,屏幕中的每一個(gè)像素都能夠被視窗和視窗間實(shí)時(shí)共享(尤其是在半透明和抗鋸齒特性上) 。這種模型允許平滑地在圖形用戶界面的狀態(tài)間進(jìn)行轉(zhuǎn)換,這是Aqua體驗(yàn)所帶來(lái)的與眾不同的特性之一 。

推薦閱讀