欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

圖形處理系統(tǒng)中的統(tǒng)一合成引擎的系統(tǒng)和方法

文檔序號:6495010閱讀:306來源:國知局
專利名稱:圖形處理系統(tǒng)中的統(tǒng)一合成引擎的系統(tǒng)和方法
背景技術(shù)
在當代計算系統(tǒng)中,圖形和視頻硬件的能力正在快步增長。事實上,在某種程度上,當代計算系統(tǒng)中的圖形系統(tǒng)與其說是簡單的圖形子系統(tǒng),還不如被視為更象是協(xié)處理器。與此同時,消費者期望所顯示的圖像的質(zhì)量越來越高,無論是在觀看例如監(jiān)視器、電視機還是蜂窩電話顯示屏。
但是,存儲器和總線速度已跟不上主處理器和/或圖形處理器的進步。結(jié)果是到達了計算機系統(tǒng)上傳統(tǒng)的訪問圖形的即時模式模型的限度。與此同時,開發(fā)者和消費者迫切需要以傳統(tǒng)的圖形窗口體系結(jié)構(gòu)無法實現(xiàn)的新特征和特殊效果。
盡管已經(jīng)設(shè)計出某些利用圖形硬件的游戲程序,但是此類游戲程序操作起來和桌面應(yīng)用程序等具有不同的要求,主要在于這些游戲無需牽涉可能并發(fā)運行的其它程序。和此類游戲程序不同,應(yīng)用程序需要與其它應(yīng)用程序共享圖形及其它系統(tǒng)資源。但是,就圖形處理而言,它們一般不被寫到協(xié)作的、機器級的共享模型中。
例如,目前用桌面應(yīng)用程序執(zhí)行動畫需要專門的專用代碼或是使用另一個應(yīng)用程序。即便如此,在多窗口環(huán)境中實現(xiàn)平滑的動畫即使不是不可能的也是很困難的。一般而言,這是因為實現(xiàn)平滑的、高速的動畫需要以很高的幀速率,理想情況是以圖形設(shè)備的硬件刷新速率來更新動畫參數(shù)并重新繪制場景(這需要遍歷和繪制數(shù)據(jù)結(jié)構(gòu))。但是,更新動畫參數(shù)并遍歷和繪制定義場景的數(shù)據(jù)結(jié)構(gòu)一般是計算密集型的。場景越大或動畫程度越高,計算要求就越大,這限制了能被平滑地動畫表現(xiàn)的場景的復(fù)雜度。
伴隨這一問題的是當圖形硬件執(zhí)行顯示刷新時動畫的每一幀都需要被計算、繪制并且呈現(xiàn)就緒的這一要求。如果當硬件需要幀時它還沒有就緒,則結(jié)果是丟失或延遲的幀。如果丟失了足夠多的幀,則在動畫表現(xiàn)的顯示中就有明顯的間停(stutter)。同樣,如果幀準備沒有與刷新速率同步,則可能發(fā)生稱為撕裂(tearing)的不悅目的效果。在實踐中,當代的多任務(wù)操作系統(tǒng)在系統(tǒng)上的多個任務(wù)之中分配計算資源。但是,操作系統(tǒng)任務(wù)調(diào)度器給予幀處理的時間量很少能與圖形硬件幀速率匹配。因此,即使當存在足夠的計算資源,動畫系統(tǒng)仍可能因為調(diào)度問題的緣故而丟失幀。例如,動畫任務(wù)可能被調(diào)度成太晚才運行,或者它可能在完成一幀以前就被先占,而沒有被及時重新調(diào)度以便為屏幕的下一次硬件刷新提供下一個幀。如果動畫表現(xiàn)的圖形需要與視頻或其它異步生成幀的源合成,則這些問題就變得甚至更加復(fù)雜。
一般而言,當需要復(fù)雜的圖形效果(諸如復(fù)雜的動畫)時,先前的(例如,WM_PAINT)用于準備幀的模型需要太多數(shù)據(jù)處理才能跟上刷新速率。結(jié)果是,當用常規(guī)的模型來嘗試復(fù)雜的圖形效果時,就不是在下一幀時完成導(dǎo)致下一幀的所感知的視像效果的改變,而是會將這些改變添加到不同的幀上,從而引起視覺上和明顯不悅目的效果。
在前述的美國專利申請中描述了一種用于控制圖形輸出的新模型。這一新模型提供了圖形處理技術(shù)中的若干顯著進步。例如,美國專利申請第10/184,795號一般針對于一種多級圖形處理系統(tǒng)和方法,其中較高級組件(例如,屬操作系統(tǒng)所有)以相對很低的操作速率執(zhí)行構(gòu)建場景圖、更新動畫參數(shù)和遍歷場景圖的數(shù)據(jù)結(jié)構(gòu)等計算密集型方面,以將簡化的數(shù)據(jù)結(jié)構(gòu)和/或圖形命令傳給低級桌面合成組件。因為高級處理大大地簡化了數(shù)據(jù),所以低級組件可用諸如對應(yīng)于圖形子系統(tǒng)的幀刷新速率的速率等較快的速率(相對于高級組件)來操作,以把數(shù)據(jù)處理成圖形子系統(tǒng)使用的恒定輸出數(shù)據(jù)。盡管上述改進在圖形處理技術(shù)中提供了實質(zhì)性的好處,但是仍需實現(xiàn)某些改進。
發(fā)明概述簡言之,本發(fā)明提供一種一般而言將先前分離的合成服務(wù)結(jié)合在一起的統(tǒng)一合成引擎的系統(tǒng)和方法。該統(tǒng)一合成引擎提供既在進程中與應(yīng)用程序編程接口(API)聯(lián)合使用的,又在桌面上作為桌面合成器使用的合成服務(wù)。該統(tǒng)一合成引擎將先前的兩個合成工作的工作結(jié)合在一起API合成引擎旨在進程中使用以便合成單個應(yīng)用程序的內(nèi)容;而桌面合成引擎旨在合成所有窗口以創(chuàng)建最終的顯示。桌面合成引擎和API合成引擎具有不同的角色和使用情形。桌面合成引擎被用來合成由其它進程呈現(xiàn)的內(nèi)容,最小限度地呈現(xiàn)其自身的內(nèi)容來實現(xiàn)窗口幀;以及與傳統(tǒng)窗口管理器(例如,User32)緊密地協(xié)調(diào)。API合成引擎被用來控制呈現(xiàn)以及合成單個應(yīng)用程序的所有內(nèi)容,并提供高效遙控的機制。API合成引擎和桌面合成引擎的使用要求中近期的修改導(dǎo)致要求API合成引擎主宿來自其它進程和傳統(tǒng)子窗口的內(nèi)容,并要求桌面合成引擎遙控窗口幀。將兩個合成工作結(jié)合在一起減少了代碼重復(fù),提高了測試覆蓋范圍,并簡化了否則將是很復(fù)雜的啟用特征,如傳統(tǒng)窗口可相互操作性、遙控和多文檔接口連接(MDI)。
附圖簡述

圖1示出可在本發(fā)明的說明性實現(xiàn)中使用的示例性計算設(shè)備。
圖2表示根據(jù)本發(fā)明的API合成引擎的一般的、分層的體系結(jié)構(gòu)。
圖3是其中可采用本發(fā)明的媒體集成層體系結(jié)構(gòu)的框圖。
圖4根據(jù)本發(fā)明示出便于使用統(tǒng)一合成引擎的概觀體系結(jié)構(gòu)。
圖5根據(jù)本發(fā)明示出對于單個應(yīng)用程序域的多個統(tǒng)一合成引擎的概觀體系結(jié)構(gòu)。
圖6根據(jù)本發(fā)明示出對于單個統(tǒng)一合成引擎的多個應(yīng)用程序域的概觀體系結(jié)構(gòu)。
優(yōu)選實施例的詳細描述本發(fā)明實質(zhì)上針對一種統(tǒng)一合成引擎(UCE)的系統(tǒng)和方法。本發(fā)明提供用于在應(yīng)用程序級和桌面級合成圖形輸出、從而實質(zhì)上減少代碼重復(fù)的方法。
以下描述分成三個部分。此描述的第一部分描述本發(fā)明可在其中操作的說明性計算環(huán)境。此描述的第二部分描述說明性圖形體系結(jié)構(gòu)。此描述的第三部分描述本發(fā)明的一個說明性實現(xiàn)。
說明性計算環(huán)境圖1示出可在其上實現(xiàn)本發(fā)明的合適的計算系統(tǒng)環(huán)境100的示例。計算系統(tǒng)環(huán)境100只是合適的計算環(huán)境的一個示例,而并不試圖對本發(fā)明的使用范圍或功能提出任何限制。也不應(yīng)將計算環(huán)境100解釋為具有涉及示例性操作環(huán)境100中所示出的任一組件或其組合的任何依賴性或要求。
本發(fā)明可與許多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置一起操作??赡苓m用于本發(fā)明的公知的計算系統(tǒng)、環(huán)境和/或配置的示例包括,但不限于,個人計算機、服務(wù)器計算機、手持式或膝上設(shè)備、圖形輸入板設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機頂盒、可編程消費者電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機、大型計算機、包括以上任何系統(tǒng)或設(shè)備的分布式計算環(huán)境、等等。
可在諸如程序模塊等由計算機執(zhí)行的計算機可執(zhí)行指令的通用上下文中描述本發(fā)明。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。本發(fā)明還可在分布式計算環(huán)境中實施,其中任務(wù)是由通過通信網(wǎng)絡(luò)鏈接的遠程處理設(shè)備執(zhí)行的。在分布式計算環(huán)境中,程序模塊可位于包括記憶存儲設(shè)備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。
參考圖1,用于實現(xiàn)本發(fā)明的示例性系統(tǒng)包括計算機110形式的通用計算設(shè)備。計算機110的組件可包括,但不限于,處理單元120、系統(tǒng)存儲器130、以及將包括系統(tǒng)存儲器在內(nèi)的各個系統(tǒng)組件耦合到處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可以是數(shù)種類型的總線結(jié)構(gòu)中的任何類型,包括存儲器總線或存儲器控制器、外圍總線、使用各種總線體系結(jié)構(gòu)中的任何體系結(jié)構(gòu)的局部總線。作為示例,而非限制,此類體系結(jié)構(gòu)包括工業(yè)標準體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強型ISA(EISA)總線、視頻電子技術(shù)標準協(xié)會(VESA)局部總線、加速圖形端口(AGP)總線、以及也稱為Mezzanine總線的外圍部件互連(PCI)總線。
計算機110通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是可由計算機110訪問的任何可用介質(zhì),并包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。作為示例,而非限制,計算機可讀介質(zhì)可包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計算機存儲介質(zhì)包括,但不限于,RAM、ROM、EEPROM、閃存或其它存儲器技術(shù),CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲,磁帶盒、磁帶、磁盤存儲或其它磁存儲設(shè)備,或任何其它可被用來存儲所需信息并可由計算機110訪問的介質(zhì)。通信介質(zhì)通常具體化為諸如載波或其它傳輸機制等已調(diào)制數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任何信息傳遞介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”是指以在信號中將信息編碼的方式設(shè)置或改變其一個或多個特征的信號。作為示例,而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接連線連接等有線介質(zhì),以及諸如聲學、RF、紅外及其它無線介質(zhì)等無線介質(zhì)。以上任何組合也應(yīng)被包括在計算機可讀介質(zhì)的范疇之內(nèi)。
系統(tǒng)存儲器130包括諸如只讀存儲器(ROM)131和隨機存取存儲器(RAM)132等易失性和/或非易失性存儲器形式的計算機存儲介質(zhì)。包含諸如在啟動期間幫助在計算機110內(nèi)諸元件之間傳遞信息的基本例程的基本輸入/輸出系統(tǒng)133(BIOS)通常被存儲在ROM 131中。RAM 132通常包含可由處理單元120立即訪問和/或現(xiàn)在正由其操作的數(shù)據(jù)和/或程序模塊。作為示例,而非限制,圖1示出操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計算機110還可包括其它可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)。僅作為示例,圖1示出讀或?qū)懖豢梢苿?、非易失性磁介質(zhì)的硬盤驅(qū)動器141,讀或?qū)懣梢苿?、非易失性磁盤152的磁盤驅(qū)動器151,以及讀或?qū)懼T如CD ROM或其它光介質(zhì)等可移動、非易失性光盤156的光盤驅(qū)動器155。可在示例性操作環(huán)境中使用的其它可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)包括,但不限于,磁帶盒、閃存卡、數(shù)字多功能盤(DVD)、數(shù)碼錄像帶、固態(tài)RAM、固態(tài)ROM、等等。硬盤驅(qū)動器141通常通過諸如接口140等不可移動存儲器接口連接到系統(tǒng)總線121,而磁盤驅(qū)動器151和光盤驅(qū)動器155通常由諸如接口150等可移動存儲器接口連接到系統(tǒng)總線121。
以上所描述并在圖1中示出的各驅(qū)動器及其相關(guān)聯(lián)的計算機存儲介質(zhì)為計算機110提供計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲。在圖1中,例如,硬盤驅(qū)動器141被示為存儲了操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147。注意,這些組件可與操作系統(tǒng)134、應(yīng)用程序135、其它程序136和程序數(shù)據(jù)137相同或不同。本文中操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147被賦予不同的標號以說明至少它們是不同的副本。用戶可通過諸如圖形輸入板(數(shù)字化轉(zhuǎn)換器)164、話筒163、鍵盤162和定位設(shè)備161(通常是指如鼠標、軌跡球或觸摸墊)等輸入設(shè)備將命令和信息輸入到計算機20中。其它輸入設(shè)備(未示出)可包括操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等。這些及其它輸入設(shè)備通常通過被耦合到系統(tǒng)總線的用戶輸入接口160連接到處理單元120,但也可由諸如并行端口、游戲端口或通用串行總線(USB)等其它接口和總線結(jié)構(gòu)連接。監(jiān)視器191或其它類型的顯示設(shè)備也經(jīng)由諸如視頻接口190等接口連接到系統(tǒng)總線121。還可將監(jiān)視器191與能經(jīng)由諸如觸摸屏接口192等接口輸入諸如手寫等數(shù)字化的輸入輸入到計算機110中的觸摸屏面板193等集成。注意,監(jiān)視器和/或觸摸屏面板可被物理地耦合到其中包含了計算設(shè)備110的外殼中,諸如在圖形輸入板類型的個人計算機中等,其中觸摸屏面板193本質(zhì)上起到圖形輸入板164的作用。此外,諸如計算設(shè)備110等計算機還可包括諸如揚聲器195和打印機196等其它外圍輸出設(shè)備,它們可通過輸出外圍接口194等來連接。
計算機110使用到諸如遠程計算機180等一臺或多臺遠程計算機的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。遠程計算機180可以是個人計算機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它常見的網(wǎng)絡(luò)節(jié)點,并通常包括以上相對于計算機110所描述的許多或全部元件,盡管在圖1中僅示出了記憶存儲設(shè)備181。圖1中所示的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但還可包括其它網(wǎng)絡(luò)。此類網(wǎng)絡(luò)環(huán)境常見于辦公室、企業(yè)范圍的計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。
當在LAN網(wǎng)絡(luò)環(huán)境中使用時,計算機110通過網(wǎng)絡(luò)接口或適配器170連接到LAN 171。當在WAN網(wǎng)絡(luò)環(huán)境中使用時,計算機110通常包括調(diào)制解調(diào)器172或其它用于通過WAN 173(諸如因特網(wǎng))建立通信的裝置??蓛?nèi)置或外置的調(diào)制解調(diào)器172可經(jīng)由用戶輸入接口160或其它適當機制連接到系統(tǒng)總線121。在聯(lián)網(wǎng)環(huán)境中,相對于計算機110所描述的程序模塊或其部分可被存儲在遠程記憶存儲設(shè)備中。作為示例,而非限制,圖1示出遠程應(yīng)用程序185駐留在記憶設(shè)備181上??梢哉J識到,所示的網(wǎng)絡(luò)連接是示例性的,并且可以使用在計算機之間建立通信鏈路的其它裝置。
說明性圖形體系結(jié)構(gòu)在一個所描述的實現(xiàn)中,一般在媒體集成層堆棧中結(jié)合本發(fā)明,其中應(yīng)用程序、桌面系統(tǒng)等通過諸如對視像API層直接進行調(diào)用或提供被詮釋為對視件API層的調(diào)用的標記,來將各種數(shù)據(jù)提交給高級視件系統(tǒng)。視件系統(tǒng)基于提交給它的數(shù)據(jù)來構(gòu)造分層結(jié)構(gòu)場景圖,并且在某個呈現(xiàn)時間將場景圖處理成命令及其它數(shù)據(jù),并與堆棧中的合成器服務(wù)異步地通信,以便將那些命令及其它數(shù)據(jù)處理成它自己的保留數(shù)據(jù)結(jié)構(gòu)。較低級的合成器系統(tǒng)可將可能來自于多個視件系統(tǒng)(客戶機)的通信結(jié)合成圖形系統(tǒng)所理解的圖形命令、以及修改保留圖形數(shù)據(jù)的各部分的動畫命令或間隔。較低級的合成器系統(tǒng)以對應(yīng)于(例如,等于或近似)圖形硬件的刷新速率的速率向圖形子系統(tǒng)提供那些圖形命令。
本發(fā)明的一個方面一般針對接收和處理程序代碼發(fā)起的繪圖指令及其它信息(例如,圖像位圖),以便在系統(tǒng)顯示上呈現(xiàn)圖形輸出。為此,本發(fā)明提供在各種組件、數(shù)據(jù)結(jié)構(gòu)和通信協(xié)議中實現(xiàn)的系統(tǒng)和方法,它們一起實現(xiàn)一種較高級的合成引擎(例如,在與視件系統(tǒng)相關(guān)聯(lián)的用戶界面線程中和呈現(xiàn)線程中),以便向較低級動畫和合成引擎或合成器提供數(shù)據(jù)。該視件系統(tǒng)向應(yīng)用程序等提供功能(例如,應(yīng)用程序編程接口,或稱API),以使那些程序能夠用數(shù)據(jù)結(jié)構(gòu)、繪圖原語(命令)及其它圖形相關(guān)的數(shù)據(jù)來填充場景圖。
圖2表示用于API合成引擎的一般的、分層的體系結(jié)構(gòu)200。如圖2中所示,可開發(fā)程序代碼202(例如,應(yīng)用程序或操作系統(tǒng)組件等),以便用一種或多種不同方式輸出圖形數(shù)據(jù),這些方式包括經(jīng)由成像204、經(jīng)由矢量圖形元素206、和/或經(jīng)由直接對視件應(yīng)用程序編程接口(API)層212進行的函數(shù)/方法調(diào)用。矢量圖形元素的用法在題為“Markup Language and Object Model for Vector Graphics”(矢量圖形的標記語言和對象模型)的前述專利申請中描述,而與API層的直接交互在題為“Visual and Scene Graph Interfaces”(視件和場景圖接口)的前述共同待批專利申請中進一步描述。
一般而言,成像機制204提供具有用于加載、編輯和保存圖像(例如,位圖)的機制的程序代碼。這些圖像可由系統(tǒng)的其它部件使用,并且還有使用原語繪圖代碼來直接繪制圖像的方法。矢量圖形元素206提供與視件系統(tǒng)的對象模型一致的繪制圖形的另一種方式。矢量圖形元素206可經(jīng)由標記語言來創(chuàng)建,元素/屬性系統(tǒng)208和呈遞器系統(tǒng)210處理標記語言來對視件API層212進行適當?shù)恼{(diào)用。一般而言,矢量圖形元素206被語法分析成對象模型的對象,從這些對象可繪制場景,它們可經(jīng)由元素級、經(jīng)由元素/屬性系統(tǒng)208和呈遞器系統(tǒng)210而被提供給場景圖,或可在資源級以更高效的方式提供。
在一個實現(xiàn)中,圖形層體系結(jié)構(gòu)200包括視件系統(tǒng)214,該系統(tǒng)包括場景圖216或是與場景圖216相關(guān)聯(lián),而場景圖216包括經(jīng)由對視件API 212的直接或間接調(diào)用構(gòu)造的按分層結(jié)構(gòu)排列的對象。一般而言,場景圖對API調(diào)用所生成的結(jié)構(gòu)質(zhì)量和特定呈現(xiàn)數(shù)據(jù)建模,并且還提供一組讀服務(wù)或?qū)傩砸员銘?yīng)用程序查詢。一般而言,視件API層212提供具有到場景圖216的接口的程序代碼(以及呈遞器系統(tǒng)),該程序代碼包括創(chuàng)建對象、打開和關(guān)閉對象以向它們提供數(shù)據(jù)等的能力。換言之,視件系統(tǒng)214展示統(tǒng)一媒體API層212,開發(fā)者通過它就可表達關(guān)于圖形和媒體的意圖以便顯示圖形信息,視件系統(tǒng)214還提供具有足夠信息的底層平臺以使該平臺可使程序代碼對硬件的使用最優(yōu)化。例如,底層平臺將負責高速緩存、資源協(xié)商和媒體集成。
根據(jù)本發(fā)明的一個方面并如下所述,視件系統(tǒng)214擔當合成器(較低級合成和動畫引擎)218的客戶機,并將適當?shù)臄?shù)據(jù)傳達給合成器以呈現(xiàn)所需的幀。一般而言,視件系統(tǒng)214包括用戶界面組件,它通常比合成器218執(zhí)行計算成本更高的操作,因此視件系統(tǒng)214的這一個方面通常以與合成器的操作速率相比相對較慢的速率操作。注意,如在本文中所使用的,術(shù)語“高級”和“低級”類似于在其它計算情形中所使用的那些術(shù)語,其中一般而言,相對于較高的組件而言,軟件組件越低,該組件就越靠近硬件。因此,例如,從視件系統(tǒng)的高級合成和動畫引擎代碼發(fā)送的圖形信息可在低級桌面合成和動畫引擎處被接收,在那里該信息被用來向包括硬件的圖形子系統(tǒng)222發(fā)送圖形數(shù)據(jù)。
根據(jù)本發(fā)明的一個方面,視件系統(tǒng)212(異步地)傳遞各種信息,諸如場景改變數(shù)據(jù)、如動畫函數(shù)數(shù)據(jù)等指令、以及可能還有由呈現(xiàn)線程處理成提供給合成器218的數(shù)據(jù)的其它數(shù)據(jù)(例如,指向位圖的指針)。換言之,視件系統(tǒng)212包括用戶界面線程和呈現(xiàn)線程,它們構(gòu)建在低級合成系統(tǒng)218上,在多個桌面應(yīng)用程序上被共享,如下文所述。這一較低級的合成系統(tǒng)218匹配設(shè)備刷新速率,并駐留在與向其發(fā)送內(nèi)容的應(yīng)用程序不同的進程中。這一從單獨客戶機(應(yīng)用程序)的視件系統(tǒng)的分離允許由系統(tǒng)調(diào)度器適當?shù)嘏卸ê吞幚韱为殤?yīng)用程序動畫的費用。此外,常駐應(yīng)用程序的合成引擎(線程)可將其專用線程分組到對類似的常駐應(yīng)用程序的合成線程公共的類別中。例如,使用CPU調(diào)度保留系統(tǒng),就可將CPU消耗百分比的上界與下界應(yīng)用于在系統(tǒng)上執(zhí)行的應(yīng)用程序。
如下文所描述的,視件系統(tǒng)214與定時和動畫系統(tǒng)220集成以提供聲明性的(或其它)動畫控制(例如,動畫函數(shù)、間隔及其它參數(shù))和定時控制。注意,動畫系統(tǒng)本質(zhì)上允許將動畫表現(xiàn)值傳遞到系統(tǒng)中的任何地方,包括,例如,在元素屬性級處,在視件API層212內(nèi),以及在任何其它資源中。定時系統(tǒng)在元素和視件級展示。
合成器218管理場景的合成、動畫表現(xiàn)和呈現(xiàn),然后場景被提供給圖形子系統(tǒng)222。在一個實現(xiàn)中,視件系統(tǒng)包括用戶界面線程,它與提供動畫和合成功能的第二線程(在同一進程中)聯(lián)合地工作。因此,每個視件系統(tǒng)中都有一個從實現(xiàn)從多個應(yīng)用程序的場景對圖形的呈現(xiàn)的(一不同進程中的)合成組件分離的合成組件。注意,有時某些呈現(xiàn)在較高級發(fā)生是有利的,例如,當較低層的服務(wù)向多個應(yīng)用程序請求時,視件系統(tǒng)是在每個應(yīng)用程序的基礎(chǔ)上實例化的,由此可能經(jīng)由成像機制以在較高級執(zhí)行耗時的或是應(yīng)用程序?qū)俚某尸F(xiàn),并將對位圖的引用傳遞給合成器218。
現(xiàn)在在API合成引擎和桌面合成引擎兩者之間共享的是以上對API合成引擎所描述的較低級的合成。將對于API合成引擎和桌面合成引擎兩者的較低級的合成結(jié)合在一起就得到本發(fā)明的統(tǒng)一合成引擎。該統(tǒng)一合成引擎實現(xiàn)對于API合成引擎和桌面合成引擎兩者的資源管理以生成用于顯示的場景,如以下在說明性實現(xiàn)的討論中所描述。
如圖3所示,作為本地顯示的輸出的替換或是除此以外,合成器218(或與其類似的組件)可向較低級的打印代碼230提供適當格式的呈現(xiàn)和動畫指令,以便將固定的圖像數(shù)據(jù)發(fā)送給打印機232等,和/或可將適當格式的呈現(xiàn)指令及簡單動畫間隔提供給較低級的終端傳輸服務(wù)器236以便向遠程機器238發(fā)送。注意,也可通過網(wǎng)絡(luò)傳遞更加豐富的信息,例如,使遠程機器在沒有任何網(wǎng)絡(luò)通信的情況下本地地處理鼠標翻轉(zhuǎn)效果可能是合乎需要的。
說明性實現(xiàn)圖4根據(jù)本發(fā)明示出便于使用統(tǒng)一合成引擎的概觀體系結(jié)構(gòu)。該統(tǒng)一合成引擎體系結(jié)構(gòu)包括主資源表402、視件樹404、合成設(shè)備接口406、改變隊列408、通知隊列410、合成樹412和從資源表414。
該統(tǒng)一合成引擎體系結(jié)構(gòu)被邏輯地分為兩層頂層或稱客戶機程401(即,視件系統(tǒng))包括作為統(tǒng)一合成引擎的主客戶機的視件樹404,而較低層是統(tǒng)一合成引擎屬性420。視件樹404提供統(tǒng)一合成引擎與其主客戶機之間的交互,以及客戶機所維護的資源表與統(tǒng)一合成引擎之間的交互。
根據(jù)本發(fā)明,視件樹404可用作為統(tǒng)一合成引擎420的客戶機的桌面窗口管理器來代替。桌面窗口管理器是當統(tǒng)一合成引擎420被用作桌面合成引擎時的客戶機。如今相同的庫執(zhí)行當視件樹404和桌面窗口管理器是統(tǒng)一合成引擎420的客戶機時相同的合成。不同的處理為應(yīng)用程序的視件樹和桌面窗口管理器運行,并且它們每一個都處理不同的數(shù)據(jù)(即,有效負荷不同),但統(tǒng)一合成引擎420的協(xié)議保持不變。在一個實施例中,用于桌面窗口管理器的協(xié)議包括當應(yīng)用程序是客戶機時可用的協(xié)議的功能子集。
舉一例而言,以下為應(yīng)用程序是客戶機時的情形描述客戶機層401和統(tǒng)一合成引擎420以及資源管理之間的交互。視件樹404表示應(yīng)用程序或文檔對要被顯示的場景的表示。這一場景可能非常大,并且可能比當前可見的要大得多。每個視件(例如,405)的內(nèi)容由呈現(xiàn)指令列表或呈現(xiàn)器數(shù)據(jù)、以及其所使用的資源(諸如結(jié)構(gòu)、點、筆、刷子、圖像等)來定義。這些資源由主資源表402管理,它包含設(shè)備和對于每個資源的分辨率無關(guān)數(shù)據(jù),并且在某些情形中還包含集合或資源相關(guān)的形式。主資源表402負責管理資源的生存期(例如,經(jīng)由引用計數(shù))。
在視件樹要被顯示以前沒有任何關(guān)于視件樹(例如,404)或資源的信息被發(fā)送給統(tǒng)一合成引擎420。當將視件樹(例如,404)與呈現(xiàn)目標相關(guān)聯(lián)時,視件樹隨適當?shù)馁Y源一起將該樹的表示發(fā)送給統(tǒng)一合成引擎420。這一經(jīng)由合成設(shè)備接口406的改變隊列408的通信是異步的。在統(tǒng)一合成引擎420中僅表示視件樹404的潛在可見的子集(本文中統(tǒng)稱為合成樹412)(即,合成器數(shù)據(jù)結(jié)構(gòu))。當視件樹被連接到已知分辨率的呈現(xiàn)目標時視件樹才被顯示。因此,對于客戶機而言,從對象到呈現(xiàn)目標空間的全變換是已知的。
被發(fā)送給統(tǒng)一合成引擎420的資源可由統(tǒng)一合成引擎420直接實現(xiàn)而無需發(fā)送回叫或所需的實現(xiàn)。如“文本”和“圖像”等資源實現(xiàn)起來是成本很高的(在處理的額外開銷的方面),因此在視件樹404中它們被轉(zhuǎn)換為適當?shù)摹俺尸F(xiàn)就緒”形式。將資源轉(zhuǎn)換為可被容易地呈現(xiàn)的形式保存了統(tǒng)一合成引擎420中合成的額外開銷。如果資源需要任何對用戶代碼的回叫,則它們也在視件樹404中實現(xiàn)。如“幾何結(jié)構(gòu)”等在需要時可由統(tǒng)一合成引擎420高效地鑲嵌到正確分辨率的其它資源由統(tǒng)一合成引擎420自己實現(xiàn)。
統(tǒng)一合成引擎420管理從資源表414中的資源。在一個實施例中,從資源表414不執(zhí)行任何形式的引用計數(shù)以便提高性能。這是可能的,因為從資源表414的資源是在合成設(shè)備的單個合成線程上被訪問的。在一個實施例中,從資源表414中的所有資源也存在于主資源表402中。主資源表402經(jīng)由串行化的改變隊列408請求來顯式地控制從資源表414的生存期。統(tǒng)一合成引擎420通過句柄來引用資源。在一個實施例中,如果資源查找失敗,則統(tǒng)一合成引擎420向通知隊列410投寄消息,并簡單地跳過請求該資源的處理。統(tǒng)一合成引擎420作為單個線程來運行,并且在恒定的合成循環(huán)中運行。
本發(fā)明中對應(yīng)于所示的統(tǒng)一合成體系結(jié)構(gòu)的一個方面是該體系結(jié)構(gòu)對資源的使用。資源可被定義為“呈現(xiàn)對不同分辨率和/或物理設(shè)備要求不同實現(xiàn)的場景所需的任何對象;它在合成樹中被多次使用;或者它將經(jīng)由諸如動畫而獨立于其用戶改變?!辟Y源在統(tǒng)一合成引擎420中被表示,并且在客戶機層401處被表示為表(例如,主資源表402)中的記錄,并由句柄來引用。使用資源的對象通過句柄來使用資源。可在資源表(例如,主資源表402)中查找句柄以取得指向?qū)嶋H對象的指針。資源能夠?qū)⒆陨泶谢瑧?yīng)用更新,并提供對特定分辨率和設(shè)備的實現(xiàn)。
資源一般被分成數(shù)種類型,諸如繪圖資源、值資源和結(jié)構(gòu)資源。繪圖資源是由呈現(xiàn)層定義的對象,并可直接由該層消耗。繪圖資源的示例包括呈現(xiàn)數(shù)據(jù)、位圖、圖像、字形串(Glyphrun)、幾何結(jié)構(gòu)和刷子。繪圖資源還可被進一步分為簡單和復(fù)雜類別。
具有非常低且恒定的呈現(xiàn)成本的繪圖資源可在合成期間從設(shè)備和分辨率不相關(guān)的源數(shù)據(jù)來實現(xiàn)。幾何結(jié)構(gòu)是簡單繪圖資源,因為它可在統(tǒng)一合成引擎420的合成循環(huán)中被高效地鑲嵌到最終所需的分辨率。相反,復(fù)雜繪圖資源需要復(fù)雜的計算、對用戶代碼的回叫、或是輸入/輸出來生成實現(xiàn)。在一個實施例中,復(fù)雜繪圖資源不是由統(tǒng)一合成引擎420實現(xiàn)。而是在合成以前預(yù)先在客戶機層401提供了適當?shù)膶崿F(xiàn)?!皥D像”是復(fù)雜資源的一個示例。圖像從磁盤讀出,被解碼,以適當?shù)姆直媛时徊蓸?,并被過濾。
值資源表示由另一個資源使用的簡單的可改變或動畫表現(xiàn)值。值資源的示例是雙精度浮點、點、色彩和變換。例如,呈現(xiàn)數(shù)據(jù)資源可引用點資源來繪制線條,預(yù)期其中一個點經(jīng)由動畫或應(yīng)用程序的強制指導(dǎo)而改變。值資源可以是靜態(tài)的或是動畫表現(xiàn)的。如果值資源是動畫表現(xiàn)的,則值資源包含定義值如何隨時間改變的動畫間隔數(shù)據(jù)。
結(jié)構(gòu)資源是在合成過程中扮演角色、但并不直接是呈現(xiàn)的一部分的對象。這些對象被實現(xiàn)為資源,從而它們可經(jīng)由改變隊列來參與更新,并可使用值資源來更新內(nèi)部值。一些目前被標識的結(jié)構(gòu)資源包括合成節(jié)點及呈現(xiàn)目標。
一般而言,資源在被使用以前必須被實現(xiàn)。實現(xiàn)可被稱為“適合于給定分辨率、并且已準備好供特定設(shè)備使用的資源的表示”。實現(xiàn)的一個示例是被鑲嵌到對應(yīng)于特定分辨率與變換的三角形中、并且可能已被加載到顯卡上的頂點緩沖區(qū)中的幾何結(jié)構(gòu)。實現(xiàn)或是在統(tǒng)一合成引擎420中在要求時創(chuàng)建的,或是在客戶機層401處創(chuàng)建并被發(fā)送到統(tǒng)一合成引擎420的。如果不能找到或者創(chuàng)建所需的資源實現(xiàn),則經(jīng)由通知隊列410將通知排隊到客戶機層401。該通知只是所需的資源句柄、變換和設(shè)備,以及實現(xiàn)所使用的任何變換。
對資源本身來說,同樣重要的是它們被如何管理。資源具有一些潛在矛盾的要求高效的生存期管理,以使資源被盡快消除;高效的記憶存儲,因為它們可能很龐大;多線程安全句柄處理;即使缺少預(yù)期的資源仍然生效的健壯代碼;以及對實現(xiàn)高效的查找以確保平滑的合成。所示的統(tǒng)一合成引擎體系結(jié)構(gòu)允許這些要求被分成兩組,其中主資源表402滿足第一組要求,而從資源表414滿足第二組要求。
主資源表402被完全地引用計數(shù)以便于安全高效的存儲器管理,并被同步以便于線程安全。引用計數(shù)是指特定資源被使用的次數(shù)。相反,從資源表414在單個線程上運行,并使用無引用和無鎖定的設(shè)計。
主資源表402管理客戶機層401應(yīng)用程序內(nèi)使用的所有資源。主資源表402負責給出句柄;對句柄記錄、資源和實現(xiàn)進行引用計數(shù);向從資源表414發(fā)送資源以及控制從資源表414資源的生存期。主資源表402可管理數(shù)以萬計的對象,其中大多數(shù)當前沒有被顯示,但是視件樹404在被用于顯示以前并不創(chuàng)建該資源。當顯示視件樹404時,視件樹404被走查,且必需的資源被發(fā)送給統(tǒng)一合成引擎420,在那里它們在從資源表414中被管理。當合成不再需要特定資源時,視件樹404通知合成設(shè)備(例如,圖2的218)刪除該資源。如果應(yīng)用程序被多點傳送給多個觀眾,則視件樹404向多個合成設(shè)備發(fā)送相同的信息。主資源表412跟蹤哪些合成設(shè)備持有每個資源的表示。
在本發(fā)明的一個方面,資源數(shù)據(jù)在客戶機層401和統(tǒng)一合成引擎420之間被共享。一經(jīng)創(chuàng)建,資源數(shù)據(jù)在共享的數(shù)據(jù)被分類為“只讀”時即可被共享,共享的數(shù)據(jù)在“復(fù)制”到統(tǒng)一合成引擎420以前是完整的,視件樹404控制共享數(shù)據(jù)的生存期,且統(tǒng)一合成引擎420對象首先由來自視件樹404的顯式請求刪除。這一組要求確保從資源表414中的數(shù)據(jù)保持與主資源表402一致的狀態(tài)。
圖5根據(jù)本發(fā)明示出對于單個應(yīng)用程序域的多個統(tǒng)一合成引擎(UCE)的概觀體系結(jié)構(gòu)。此結(jié)構(gòu)在客戶機層處包括單個應(yīng)用程序域,但有多個統(tǒng)一合成引擎用于與該應(yīng)用程序聯(lián)合地合成場景。邏輯合成設(shè)備(例如,去往UCE C的合成設(shè)備)定義應(yīng)用程序(即,合成客戶機)與多個統(tǒng)一合成引擎中的每一個之間的連接。何時可使用這一體系結(jié)構(gòu)的一個示例是在單個應(yīng)用程序通過網(wǎng)絡(luò)在一個以上機器上被顯示的遠程協(xié)助或其它情形的情況下。可與單個應(yīng)用程序域聯(lián)合地使用的統(tǒng)一合成引擎的個數(shù)不限于所示的三個,而是可以是所需的任何個數(shù)。
圖6根據(jù)本發(fā)明示出對于單個統(tǒng)一合成引擎的多個應(yīng)用程序域的概觀體系結(jié)構(gòu)。這一體系結(jié)構(gòu)在客戶機層包括多個應(yīng)用程序域,但有單個統(tǒng)一合成引擎用于與這多個應(yīng)用程序聯(lián)合地合成場景。邏輯合成設(shè)備(例如,去往UCE C的合成設(shè)備)定義其中每個應(yīng)用程序(即,合成客戶機)與統(tǒng)一合成引擎之間的連接。何時可使用這一體系結(jié)構(gòu)的一個示例是在單個計算設(shè)備上的多個應(yīng)用程序被要求每一個都具有它們自己的域的情況下。可與單個統(tǒng)一合成引擎聯(lián)合地使用的應(yīng)用程序域的個數(shù)不限于所示的三個,而是可以是所需的任何個數(shù)。
以上說明、示例和數(shù)據(jù)對本發(fā)明的組成部分的制造和使用提供了完整的描述。因為可實現(xiàn)本發(fā)明的許多實施例而不會偏離本發(fā)明的精神和范圍,所以本發(fā)明駐留在所附權(quán)利要求書中。
權(quán)利要求
1.一種在計算環(huán)境中的系統(tǒng),包括視件系統(tǒng),所述視件系統(tǒng)接收來自程序和窗口桌面管理器中的一個的構(gòu)造分層數(shù)據(jù)結(jié)構(gòu)的調(diào)用;以及統(tǒng)一合成引擎,所述統(tǒng)一合成引擎接收來自所述視件系統(tǒng)的命令,其中所述統(tǒng)一合成引擎響應(yīng)于提供圖形輸出的命令而構(gòu)造合成器數(shù)據(jù)結(jié)構(gòu)。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述統(tǒng)一合成引擎包括與第二合成設(shè)備分離的第一合成設(shè)備,所述第一合成設(shè)備被并入所述視件系統(tǒng)中,并被配置成向所述第二合成設(shè)備提供數(shù)據(jù)。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括被包括在所述視件系統(tǒng)中的主資源表,其中所述主資源表包括由所述應(yīng)用程序和所述桌面窗口管理器中的一個使用的第一資源列表;以及被包括在所述統(tǒng)一合成引擎中的從資源表,其中所述從資源表包括提供給所述統(tǒng)一合成引擎的第二資源列表,所述從資源列表由所述主資源表管理。
4.如權(quán)利要求3所述的系統(tǒng),其特征在于,當與所述第一資源列表相比較時,所述第二資源列表是包括性的資源列表。
5.如權(quán)利要求3所述的系統(tǒng),其特征在于,所述主資源表負責給出句柄,對句柄記錄、資源和實現(xiàn)進行引用計數(shù),向所述從資源發(fā)送資源,以及控制所述從資源表資源的生存期。
6.如權(quán)利要求3所述的系統(tǒng),其特征在于,所述主資源表經(jīng)由串行化的請求來顯式地控制從資源表資源的生存期。
7.如權(quán)利要求1所述的系統(tǒng),其特征在于,當所述統(tǒng)一合成引擎響應(yīng)于所述桌面窗口管理器而操作時,以及當所述統(tǒng)一合成引擎響應(yīng)于程序而操作時,相同的庫執(zhí)行相同的合成。
8.如權(quán)利要求1所述的系統(tǒng),其特征在于,在響應(yīng)于所述桌面窗口管理器時由所述統(tǒng)一合成引擎使用的協(xié)議包括在響應(yīng)于所述程序時由所述統(tǒng)一合成引擎使用的協(xié)議的功能子集。
9.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述從資源表資源是在單個合成線程上被訪問的。
10.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述統(tǒng)一合成引擎作為單個線程運行,并且在恒定的合成循環(huán)中運行。
11.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括與所述統(tǒng)一合成引擎通信以使所述圖形輸出對應(yīng)于所述視件系統(tǒng)的其它視件系統(tǒng)。
12.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括與所述視件系統(tǒng)通信從而產(chǎn)生對應(yīng)于所述視件系統(tǒng)的多個圖形輸出的其它統(tǒng)一合成引擎。
13.一種在計算系統(tǒng)中的方法,包括接收來自程序和桌面窗口管理器中的一個的調(diào)用,其中響應(yīng)于所述調(diào)用構(gòu)造分層場景結(jié)構(gòu);向統(tǒng)一合成引擎?zhèn)鬟_表示對所述分層數(shù)據(jù)結(jié)構(gòu)的改變的信息;向所述統(tǒng)一合成引擎?zhèn)鬟_一組資源,其中所述的一組資源對應(yīng)于與所述分層數(shù)據(jù)結(jié)構(gòu)相關(guān)的主資源表;基于所傳達的信息更新所述合成器數(shù)據(jù)結(jié)構(gòu)中的信息;基于所傳達的一組資源更新從資源表,其中所述從資源表與所述合成器數(shù)據(jù)結(jié)構(gòu)相關(guān);以及處理所述合成器數(shù)據(jù)結(jié)構(gòu)以輸出圖形信息。
14.如權(quán)利要求13所述的方法,其特征在于,與處理所述合成器數(shù)據(jù)結(jié)構(gòu)以產(chǎn)生所述輸出圖形信息相比,構(gòu)造所述分層情景結(jié)構(gòu)的進程是異步執(zhí)行的。
15.如權(quán)利要求13所述的方法,其特征在于,所述從資源表包括在與所述主資源表相比較時是包括性資源列表的資源列表。
16.如權(quán)利要求13所述的方法,其特征在于,還包括響應(yīng)于所述主資源表而控制所述從資源表資源的生存期。
17.如權(quán)利要求13所述的方法,其特征在于,還包括當所述統(tǒng)一合成引擎響應(yīng)于所述桌面窗口管理器而操作時根據(jù)第一個庫使用所述統(tǒng)一合成引擎來執(zhí)行合成,并且當所述統(tǒng)一合成引擎響應(yīng)于程序而操作時根據(jù)所述第一個庫使用所述統(tǒng)一合成引擎來執(zhí)行合成。
18.如權(quán)利要求13所述的方法,其特征在于,在響應(yīng)于所述桌面窗口管理器時由所述統(tǒng)一合成引擎使用的協(xié)議包括在響應(yīng)于所述程序時由所述統(tǒng)一合成引擎使用的協(xié)議的功能子集。
19.如權(quán)利要求13所述的方法,其特征在于,還包括在單個合成線程上訪問所述從資源表資源。
20.如權(quán)利要求13所述的方法,其特征在于,還包括將所述統(tǒng)一合成引擎作為單個線程并在恒定的合成循環(huán)中運行。
21.如權(quán)利要求13所述的方法,其特征在于,還包括將其它信息和其它各組資源傳達給所述統(tǒng)一合成引擎,以使所述圖形輸出信息對應(yīng)于其它程序。
22.如權(quán)利要求13所述的方法,其特征在于,還包括將所述信息和各組資源傳達給多個統(tǒng)一合成引擎,從而生成對應(yīng)于程序和桌面窗口管理器中的一個的多個圖形輸出信息。
全文摘要
本發(fā)明針對一種一般而言將先前分離的合成服務(wù)結(jié)合在一起的統(tǒng)一合成引擎的系統(tǒng)和方法。統(tǒng)一合成引擎提供既在進程中與應(yīng)用程序編程接口(API)聯(lián)合使用的,又在桌面上作為桌面合成器使用的合成服務(wù)。
文檔編號G06T15/00GK1860505SQ200480027988
公開日2006年11月8日 申請日期2004年7月29日 優(yōu)先權(quán)日2003年10月23日
發(fā)明者G·D·斯韋德伯格, P·戴維, A·阿索弗, D·B·柯蒂斯, L·E·布蘭克 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
隆回县| 苍溪县| 衡东县| 寿光市| 措勤县| 凤城市| 利辛县| 威信县| 麻栗坡县| 原阳县| 甘泉县| 三门峡市| 南康市| 阿拉善左旗| 深泽县| 尼玛县| 乾安县| 重庆市| 集安市| 文昌市| 荆州市| 桂平市| 永川市| 易门县| 安塞县| 永州市| 澄迈县| 黑山县| 平昌县| 东兴市| 吉林市| 龙游县| 临漳县| 新蔡县| 简阳市| 莱州市| 莱州市| 怀来县| 芦山县| 得荣县| 淄博市|