專利名稱:硬件加速混合模式的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計算機(jī)圖形領(lǐng)域,尤其涉及圖形信息的計算機(jī)硬件呈現(xiàn)。
背景技術(shù):
混合模式是一種公式,用于將源圖元的顏色與目的圖元的顏色組合,以便在所呈現(xiàn)的圖元中產(chǎn)生新的顏色。圖元是典型的圖形處理單元繪制的最簡單對象,并且圖元可以被組合,以形成更具健壯性的圖像、形狀、背景、圖形等。源圖元可以是在現(xiàn)有圖元的頂上呈現(xiàn)的圖元,而目的圖元可以是該現(xiàn)有圖元。當(dāng)使用特定混合模式將源圖元變?yōu)槟康膱D元時,可以將混合模式應(yīng)用于該源圖元和目的圖元的每個像素。利用這個方法,可以將混合模式應(yīng)用于源圖元和目的圖元的每個像素,以計算關(guān)于所呈現(xiàn)的圖元的每個像素的新顏色。
可以用四個成分的組合來描述像素的顏色。這些成分中的三個成分可以表示顏色中的紅色R、綠色G和藍(lán)色B的數(shù)量。這些成分可以被標(biāo)注為R、G和B,其中的每個成分可以是范圍從0到1的浮點數(shù)。第四個成分可以是阿爾法A值,并可以表示像素的不透明度。0的阿爾法A值可以將像素描述為透明,1的阿爾法A值可以將像素描述為不透明,分?jǐn)?shù)阿爾法A值可以描述像素的半透明程度。這樣,R、G、B和A的四個值可以定義像素的顏色和不透明度。
關(guān)于混合模式的公式可以用各種方法來寫。圖形處理單元可以提供關(guān)于公式的內(nèi)置支持,該公式從源顏色S和目的顏色D的成分中計算新顏色N的成分。這些公式可以包括參數(shù)P和Q,參數(shù)P和Q可以確定混合模式的工作方式。可以從集合{0,1,DA,1-DA,DC,1-DC}中選擇被稱作“源混合因子”的參數(shù)P。同樣,可以從集合{0,1,SA,1-SA,SC,1-SC}中選擇被稱作“目的混合因子”的參數(shù)Q??梢员粌?nèi)置到圖形處理單元來產(chǎn)生關(guān)于每個像素的新顏色或不透明度N的混合模式可以包括NR=P·SR+Q·DRNG=P·SG+Q·DG
NB=P·SB+Q·DBNA=P·SA+Q·DA可以使用P和Q參數(shù)來實現(xiàn)混合模式,如以下表格,即表1中所列出的
表1參數(shù)P和Q的示例值除P和Q以外還有參數(shù)可以被加入混合模式,以提供關(guān)于混合模式的額外的變更。例如,參數(shù)X、Y和Z可以被加以使用,并可以是具有0或1的值的常數(shù)。當(dāng)將不透明的源圖元與不透明的目的圖元合成時,X可以確定源和目標(biāo)的交集是否出現(xiàn)在合成圖元中,Y可以確定目的圖元以外的源圖元的一部分是否會出現(xiàn),并且,Z可以確定源圖元以外的目的圖元的一部分是否會出現(xiàn)。函數(shù)f可以是源顏色和目的顏色的函數(shù)。以下方程式可以提供混合模式的更一般的公式化,從而再次從每個像素的給定源顏色S和目的顏色D中計算新的顏色或不透明度NNR=f(SR,SA,DR,DA)+Y·SR·(1-DA)+Z·DR·(1-SA)NG=f(SG,SA,DG,DA)+Y·SG·(1-DA)+Z·DG·(1-SA)NB=f(SB,SA,DB,DA)+Y·SB·(1-DA)+Z·DB·(1-SA)NA=X·SA·DA+Y·SA·(1-DA)+Z·DA·(1-SA)一些混合模式可以包括在例如圖形處理單元的驅(qū)動程序中,并且,其他混合模式可以由圖形應(yīng)用程序來提供。關(guān)于這類混合模式的示例參數(shù)值在以下表格,即表2中列出
表格2關(guān)于一般混合公式的范例參數(shù)通常,圖形處理單元應(yīng)用一些混合模式。關(guān)于更復(fù)雜或更多變的混合模式,圖形應(yīng)用程序可以通過中央處理單元上的軟件來執(zhí)行其部分或全部的呈現(xiàn)計算。即,該中央處理單元可以執(zhí)行兩個圖元的混合,然后將位圖發(fā)送到圖形處理單元用于呈現(xiàn)。所以,圖形應(yīng)用程序的執(zhí)行速度可能會受限于中央處理單元可以呈現(xiàn)合成圖元的像素的呈現(xiàn)速度。中央處理單元的呈現(xiàn)速度可能比圖形處理單元的呈現(xiàn)速度慢。
例如,圖形應(yīng)用程序可以規(guī)定當(dāng)在其他圖元頂上被繪制時,特定圖元應(yīng)該使其他圖元的顏色變暗。應(yīng)用于現(xiàn)有圖元的暗色化數(shù)量可以根據(jù)混合模式由新近繪制的圖元的亮度來加以控制。通常,中央處理單元可以為合成呈現(xiàn)中的新圖元所覆蓋的每個像素應(yīng)用混合模式。
當(dāng)完成呈現(xiàn)進(jìn)程時,通過使用中央處理單元來逐個像素地應(yīng)用混合模式,可以減緩應(yīng)用程序執(zhí)行。此外,可以從完成其他工作中拉出中央處理單元,以應(yīng)用混合模式,從而潛在地減緩其他任務(wù)的執(zhí)行。在客戶機(jī)-服務(wù)器情形中,服務(wù)器中央處理單元可以應(yīng)用混合模式,然后將合成圖元的所有像素從服務(wù)器傳送到客戶機(jī),從而消耗頗有價值的帶寬。
所以,需要用于在利用圖形處理單元的速度的同時更有效率地呈現(xiàn)混合模式的方法和裝置。此外,這些方法和裝置應(yīng)該最小化對中央處理單元要求的計算量和呈現(xiàn)進(jìn)程中所要求的帶寬。
發(fā)明內(nèi)容
本發(fā)明允許在圖形處理單元上而不是在中央處理單元上計算圖形應(yīng)用程序混合模式。本發(fā)明可以利用當(dāng)前圖形硬件的管道化并行操作,釋放中央處理單元來執(zhí)行其他功能,并減少合成圖元的像素從服務(wù)器到客戶機(jī)的傳輸。要求兩個或更多圖元的混合的圖形應(yīng)用程序代碼可以向中央處理單元發(fā)送程序,當(dāng)被執(zhí)行時,該程序可以應(yīng)用用于混合的混合模式。中央處理單元可以將該程序發(fā)送到圖形處理單元用于執(zhí)行。
圖形處理單元可以執(zhí)行該程序,并且,例如,在源紋理圖中繪制源圖元,并在目的紋理圖中繪制目的圖元。用于將混合模式應(yīng)用于圖元的該程序可以被設(shè)置成應(yīng)用于源紋理圖和目的紋理圖。然后,圖形處理單元可以將混合模式應(yīng)用于這些圖元的每個像素,并在目的呈現(xiàn)目標(biāo)中呈現(xiàn)復(fù)合圖元。
當(dāng)結(jié)合附圖來閱讀時,可更好地理解本發(fā)明的以上概述和以下詳細(xì)說明。在附圖中示出本發(fā)明的實施例,但是,可理解本發(fā)明不限于其中所描繪的具體方法和手段。在這些附圖中圖1是示出其中可實施本發(fā)明的各個方面的示例計算環(huán)境的框圖;圖2是用于根據(jù)本發(fā)明來提供硬件加速混合模式的示例系統(tǒng)的框圖;圖3是用于根據(jù)本發(fā)明來提供硬件加速混合模式的示例方法的框圖;以及,圖4是用于根據(jù)本發(fā)明來提供硬件加速混合模式的替換示例方法的框圖。
具體實施例方式
示例計算環(huán)境圖1和下文意在簡要、概括地描述其中可以實施本發(fā)明的示例實施例的合適的計算環(huán)境100。如這里所使用的,術(shù)語“計算系統(tǒng)”、“計算機(jī)系統(tǒng)”和“計算機(jī)”指包括能夠執(zhí)行或處理程序代碼和/或數(shù)據(jù)的處理器的任何機(jī)器、系統(tǒng)或設(shè)備。計算系統(tǒng)的例子包括(無任何有意的限制)個人計算機(jī)(PC)、小型計算機(jī)、大型計算機(jī)、瘦客戶機(jī)、網(wǎng)絡(luò)PC、服務(wù)器、工作站、膝上型計算機(jī)、手持式計算機(jī)、可編程消費者電子設(shè)備、多媒體控制臺、游戲控制臺、衛(wèi)星接收器、機(jī)頂盒、自動提款機(jī)、游戲控制臺、移動電話、個人數(shù)字助理(PDA)、以及基于任何其他處理器的系統(tǒng)或機(jī)器。術(shù)語“程序代碼”和“代碼”指處理器所執(zhí)行或處理的任何指令集。以下描述通用計算機(jī),但這只是一個例子。本發(fā)明也可以在具有網(wǎng)絡(luò)服務(wù)器互操作性和交互作用的瘦客戶機(jī)上操作。這樣,本發(fā)明的示例實施例可以在其中牽涉非常少或最少客戶機(jī)資源的網(wǎng)絡(luò)化主存服務(wù)的環(huán)境(例如,其中客戶機(jī)設(shè)備僅僅用作與萬維網(wǎng)的瀏覽器或接口的網(wǎng)絡(luò)化環(huán)境)中實施。
雖然未作要求,但是,本發(fā)明可以經(jīng)由應(yīng)用程序編程接口(API)來實施,供開發(fā)者或測試者使用,/或被包括在網(wǎng)絡(luò)瀏覽軟件內(nèi),該網(wǎng)絡(luò)瀏覽軟件將在正由一臺或多臺計算機(jī)(例如,客戶工作站、服務(wù)器或其他設(shè)備)執(zhí)行的計算機(jī)可執(zhí)行指令(例如,程序模塊)的一般上下文中描述。通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。通常,可以按需要在各種環(huán)境中組合或分布這些程序模塊的功能。也可以在分布式計算環(huán)境中實踐本發(fā)明的實施例,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)或其他數(shù)據(jù)傳輸介質(zhì)連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括記憶存儲設(shè)備的本地和遠(yuǎn)程計算機(jī)存儲介質(zhì)中。
圖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中所展示的任何一個組件或組件組合的任何依賴或要求。
參照圖1,用于實現(xiàn)本發(fā)明的示例系統(tǒng)包括采取計算機(jī)110的形式的通用計算設(shè)備。計算機(jī)110的組件可以包括(但不局限于)中央處理單元120、圖形處理單元125、系統(tǒng)存儲器130和系統(tǒng)總線121,系統(tǒng)總線121將包括該系統(tǒng)存儲器的各種系統(tǒng)組件耦合到處理單元120。系統(tǒng)總線121可以是幾種類型的總線結(jié)構(gòu)中的任一種,包括存儲總線或存儲控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任一種的局部總線。舉例來講(不作限制),這類體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線、微通道結(jié)構(gòu)(MCA)總線、增強(qiáng)型ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(VESA)局部總線和外圍部件互連(PCI)總線(也被稱作Mezzanine總線)。此外,計算機(jī)110可以包括加速圖形總線,通過該加速圖形總線,圖形處理單元125和視頻接口190可以與監(jiān)視器191進(jìn)行通信。
通過例如將圖形點從圖元變換到各自的緩沖器、計算每個像素處的照明、計算表面上的紋理并呈現(xiàn)圖元,圖形處理單元125可以在監(jiān)視器191上呈現(xiàn)圖元和圖元的組合(例如,圖像、形狀、背景、圖形等)。
計算機(jī)110通常包括各種計算機(jī)可讀介質(zhì)。計算機(jī)可讀介質(zhì)可以是可由計算機(jī)110存取的任何可用介質(zhì),它包括易失性和非易失性、可移動和不可移動介質(zhì)。舉例來講(不作限制),計算機(jī)可讀介質(zhì)可以包括計算機(jī)存儲介質(zhì)和通信介質(zhì)。計算機(jī)存儲介質(zhì)包括易失性和非易失性的可移動和不可移動介質(zhì),該介質(zhì)用關(guān)于例如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等信息的存儲的任何方法或技術(shù)來實現(xiàn)。計算機(jī)存儲介質(zhì)包括(但不局限于)隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、閃存或其他存儲技術(shù)、光盤只讀存儲器(CDROM)、數(shù)字多功能盤(DVD)或其他光盤存儲、盒式磁帶、磁帶、磁盤存儲或其他磁存儲設(shè)備、或可以被用來存儲所需信息并可以由計算機(jī)110存取的其他任何介質(zhì)。通信介質(zhì)通常具體化為例如載波或其他傳送機(jī)制等已調(diào)制數(shù)據(jù)信號中的計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),它包括任何信息傳遞介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”意味著一種信號,其一個或多個特征按為該信號中的信息編碼的這樣一種方式來加以設(shè)置或更改。舉例來講(不作限制),通信介質(zhì)包括有線介質(zhì)(例如,有線網(wǎng)絡(luò)或直線連接)和無線介質(zhì)(例如,聲音、射頻(RF)、紅外線和其他無線介質(zhì))。以上任何內(nèi)容的組合也被包括在計算機(jī)可讀介質(zhì)的范圍以內(nèi)。
系統(tǒng)存儲器130包括采取易失性和/或非易失性存儲器形式的計算機(jī)存儲介質(zhì),例如,ROM 131和RAM 132。基本輸入/輸出系統(tǒng)133(BIOS)通常被存儲在ROM 131中,該基本輸入/輸出系統(tǒng)包含有助于在計算機(jī)110內(nèi)的各個元件之間傳送信息(例如,在啟動期間)的基本例程。RAM 132通常包含可立即由處理單元120存取和/或目前正由處理單元120進(jìn)行操作的數(shù)據(jù)和/或程序模塊。舉例來講(不作限制),圖1展示了操作系統(tǒng)134、應(yīng)用程序135、其他程序模塊136和程序數(shù)據(jù)137。RAM 132可以包含其他數(shù)據(jù)和/或程序模塊。
計算機(jī)110也可以包括其他可移動/不可移動、易失性/非易失性計算機(jī)存儲介質(zhì)。只舉例來講,圖1展示了從不可移動的非易失性磁介質(zhì)讀取或?qū)ζ鋵懭氲挠脖P驅(qū)動器141、從可移動的非易失性磁盤152讀取或?qū)ζ鋵懭氲拇疟P驅(qū)動器151、以及從可移動的非易失性光盤156(例如,CD ROM或其他光學(xué)介質(zhì))讀取或?qū)ζ鋵懭氲墓獗P驅(qū)動器155??梢杂糜谠撌纠僮鳝h(huán)境的其他可移動/不可移動、易失性/非易失性計算機(jī)存儲介質(zhì)包括(但不局限于)盒式磁帶、閃存卡、數(shù)字多功能盤、數(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)的計算機(jī)存儲介質(zhì)為計算機(jī)110提供計算機(jī)可讀指令、數(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提供不同的標(biāo)號,以展示它們至少是不同的副本。用戶可以通過輸入設(shè)備,例如,鍵盤162和通常被稱作鼠標(biāo)、跟蹤球或觸墊的定點設(shè)備161,來將命令和信息輸入計算機(jī)110。其他輸入設(shè)備(未示出)可以包括話筒、操縱桿、游戲墊、圓盤式衛(wèi)星電視天線、掃描儀或類似的輸入設(shè)備。這些和其他輸入設(shè)備經(jīng)常通過被耦合到系統(tǒng)總線121的用戶輸入接口160而被連接到處理單元120,但也可以由其他接口和總線結(jié)構(gòu)(例如,并行端口、游戲端口或通用串行總線(USB))來連接。
監(jiān)視器191或其他類型的顯示設(shè)備也經(jīng)由接口(例如,視頻接口190)而被連接到系統(tǒng)總線121。除監(jiān)視器191以外,計算機(jī)也可以包括其他外圍輸出設(shè)備(例如,揚聲器197和打印機(jī)196),這些外圍輸出設(shè)備可以通過輸出外圍接口195來連接。
計算機(jī)110可以使用與一臺或多臺遠(yuǎn)程計算機(jī)(例如,遠(yuǎn)程計算機(jī)180)的邏輯連接而在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計算機(jī)180可以是個人計算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他常見的網(wǎng)絡(luò)節(jié)點,它通常包括以上相對于計算機(jī)110而描述的許多或所有這些元件,盡管圖1中只展示了記憶存儲設(shè)備181。圖1中所描繪的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可以包括其他網(wǎng)絡(luò)。這類網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)范圍的計算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中很常見。
當(dāng)用于LAN網(wǎng)絡(luò)環(huán)境中時,計算機(jī)110通過網(wǎng)絡(luò)接口或適配器170連接到LAN 171。當(dāng)用于WAN網(wǎng)絡(luò)環(huán)境中時,計算機(jī)110通常包括調(diào)制解調(diào)器172或用于通過WAN 173(例如,因特網(wǎng))建立通信的其他裝置。調(diào)制解調(diào)器172(可以是內(nèi)置的,也可能以外置的)可以經(jīng)由用戶輸入接口160或其他適當(dāng)?shù)臋C(jī)制連接到系統(tǒng)總線121。在網(wǎng)絡(luò)化環(huán)境中,相對于計算機(jī)110或其各個部分而描繪的程序模塊可以被存儲在遠(yuǎn)程記憶存儲設(shè)備中。舉例來講(不作限制),圖1將遠(yuǎn)程應(yīng)用程序185展示為駐留在存儲設(shè)備181上。將會理解,所示的這些網(wǎng)絡(luò)連接起示例的作用,可以使用在這些計算機(jī)之間建立通信鏈路的其他手段。
計算機(jī)110或其他客戶機(jī)設(shè)備可以被部署為計算機(jī)網(wǎng)絡(luò)的一部分。在這方面,本發(fā)明關(guān)于具有任何數(shù)量的記憶或存儲單元的任何計算機(jī)系統(tǒng)、以及跨任何數(shù)量的存儲單元或卷而發(fā)生的任何數(shù)量的應(yīng)用程序和進(jìn)程。本發(fā)明的實施例可以應(yīng)用于具有被部署在網(wǎng)絡(luò)環(huán)境中的服務(wù)器計算機(jī)和客戶計算機(jī)的環(huán)境,從而擁有遠(yuǎn)程或本地存儲。本發(fā)明也可以應(yīng)用于獨立計算設(shè)備,從而具有編程語言功能、解釋和執(zhí)行性能。
示例實施例圖2是用于根據(jù)本發(fā)明來提供硬件加速混合模式的示例系統(tǒng)200的框圖。系統(tǒng)200可以包括與服務(wù)器計算機(jī)250進(jìn)行通信的客戶計算機(jī)210。將會理解本發(fā)明的實施例可以在客戶計算機(jī)210或服務(wù)器計算機(jī)250上單獨實施,并且,系統(tǒng)200描繪了本發(fā)明的許多示例實現(xiàn)之一。
客戶計算機(jī)210和服務(wù)器計算機(jī)250的每一個可以是根據(jù)圖1描述的計算機(jī)110??蛻粲嬎銠C(jī)210可以包括中央處理單元220、圖形應(yīng)用程序235和可編程圖形處理單元225,并可以為監(jiān)視器291提供顯示器。服務(wù)器計算機(jī)250可以包括中央處理單元260和圖形應(yīng)用程序265。當(dāng)然,客戶計算機(jī)210和服務(wù)器計算機(jī)250可以包括其他組件,并可以與其他設(shè)備(例如,根據(jù)圖1描述的設(shè)備)進(jìn)行通信。
可編程圖形處理單元225可以是在監(jiān)視器291上呈現(xiàn)圖元和圖元的組合(例如,圖像、形狀、背景、圖形等)的硬件設(shè)備。通過例如將圖形點從圖元變換到各自的緩沖器、計算每個像素處的照明、計算表面上的紋理等并在監(jiān)視器291上呈現(xiàn)圖元,可編程圖形處理單元225可以呈現(xiàn)圖元??删幊虉D形處理單元225可以與客戶計算機(jī)210的中央處理單元220進(jìn)行通信。作為選擇或除此之外,可編程圖形處理單元225可以通過客戶計算機(jī)210來與服務(wù)器計算機(jī)250的中央處理單元260進(jìn)行通信。
圖形應(yīng)用程序235、265的每一個可以是規(guī)定呈現(xiàn)諸如圖元等圖形信息的任何應(yīng)用程序。這類圖元可以是被呈現(xiàn)在緩沖器中或被顯示在監(jiān)視器上的任何事物。圖元可以被組合和呈現(xiàn)為例如圖片、視頻、圖像、文本、圖形或形狀。圖形應(yīng)用程序235、265可以通過圖形處理單元來實現(xiàn)用于將源圖元與目的圖元混合的混合模式?;旌夏J娇梢酝ㄟ^執(zhí)行通常被稱作“像素著色器”的單獨的功能、程序、模塊、或類似物來實現(xiàn)或被應(yīng)用于圖元。如這里所使用的,術(shù)語“像素著色器”的意思是應(yīng)用混合模式的程序代碼。圖形應(yīng)用程序235、265可以規(guī)定在像素著色器中應(yīng)用混合模式,并且,每個像素著色器可以是用于執(zhí)行混合模式的功能或程序。
圖形應(yīng)用程序235、265可以與各自的中央處理單元220、260進(jìn)行通信或由各自的中央處理單元220、260來執(zhí)行。在圖形應(yīng)用程序235的執(zhí)行期間,可以調(diào)用源圖元,以便根據(jù)混合模式與目的圖元相混合。圖形應(yīng)用程序235可以將像素陰影著色器發(fā)送到中央處理單元220。根據(jù)本發(fā)明,圖形應(yīng)用程序235可以指示中央處理單元220將像素著色器發(fā)送到可編程圖形處理單元225,而不是在中央處理單元上執(zhí)行像素著色器。中央處理單元220可以指示可編程圖形處理單元225執(zhí)行像素著色器。這樣,像素著色器可以便于將混合模式應(yīng)用于源圖元和目的圖元的每個像素,并呈現(xiàn)合成圖元。即,可以指示可編程圖形處理單元225根據(jù)混合模式來混合源圖元和目的圖元??删幊虉D形處理單元225可以執(zhí)行像素著色器,以便將混合模式應(yīng)用于源圖元和目的圖元的每個像素,并例如在監(jiān)視器291上呈現(xiàn)合成圖元。作為選擇,圖形應(yīng)用程序235可以與用作圖形應(yīng)用程序235與圖形處理單元225之間的中介的應(yīng)用程序進(jìn)行通信。這種中介應(yīng)用程序可以是包括像素著色器的圖形處理單元驅(qū)動程序或圖形庫。圖形應(yīng)用程序235可以指示該中介應(yīng)用程序?qū)⑦m當(dāng)?shù)南袼刂魈峁┙o可編程圖形處理單元225,用于混合操作。然后,中介應(yīng)用程序可以選擇適當(dāng)?shù)南袼刂?,以便提供適當(dāng)?shù)幕旌喜⑾袼刂靼l(fā)送到圖形處理單元用于執(zhí)行。
在一個替換實施例中,運行于服務(wù)器計算機(jī)250上的圖形應(yīng)用程序265可以將像素著色器發(fā)送到中央處理單元260,從而指示中央處理單元260將它發(fā)送到客戶計算機(jī)210,用于在可編程圖形處理單元225上執(zhí)行。中央處理單元260可以指示可編程圖形處理單元225執(zhí)行像素著色器并呈現(xiàn)合成圖元。
圖3是用于根據(jù)本發(fā)明來提供硬件加速混合模式的示例方法300的流程圖。該方法可以在步驟310開始,其中圖形應(yīng)用程序(例如,要求將要被呈現(xiàn)在顯示器上的圖元的應(yīng)用程序)在計算機(jī)上執(zhí)行。該計算機(jī)可以是圖2中的客戶計算機(jī)210或服務(wù)器計算機(jī)250、或某臺其他的計算機(jī)。在步驟320中,圖形應(yīng)用程序可以規(guī)定或要求源圖元與目的圖元混合,用于緩沖器(例如,顯示器)中的呈現(xiàn)。在步驟330中,圖形應(yīng)用程序可以向中央處理單元發(fā)送程序代碼,該程序代碼在被執(zhí)行時應(yīng)用混合模式。這種程序代碼可以包括像素著色器。
在步驟340中,中央處理單元可以將程序代碼發(fā)送到可編程圖形處理單元用于執(zhí)行。在步驟350中,可編程圖形處理單元可以執(zhí)行程序代碼,以便將混合模式應(yīng)用于源圖元和目的圖元的每個像素。然后,在步驟360中,可以在顯示緩沖器上呈現(xiàn)合成圖元。
圖4是用于根據(jù)本發(fā)明來提供硬件加速混合模式的替換示例方法400的流程圖。該方法可以在步驟410開始,其中指示可編程圖形處理單元使用例如供應(yīng)的像素著色器來將源圖元與目的圖元混合。像素著色器可以由例如圖形應(yīng)用程序、驅(qū)動程序、圖形庫或操作系統(tǒng)來供應(yīng)。在步驟420中,源圖元可以被接收并被呈現(xiàn)到臨時紋理圖,該臨時紋理圖在下文中被稱作“源紋理圖”。可以從中央處理單元接收源圖元,該中央處理單元從圖形應(yīng)用程序接收該圖元。
在步驟430中,可以制作來自呈現(xiàn)目標(biāo)的目的圖元的副本,并將其放置在臨時紋理圖中。該臨時紋理圖在下文中被稱作“目的紋理圖”。將會理解如果所使用的可編程圖形處理單元不規(guī)定像素著色器直接從目的呈現(xiàn)目標(biāo)讀取像素顏色,那么,可以執(zhí)行步驟430。如果關(guān)于可編程圖形處理單元的體系結(jié)構(gòu)啟用或允許從相同的呈現(xiàn)目標(biāo)讀取并對其寫入,那么,可以從方法400中排除步驟430。
在步驟440中,像素著色器可以被設(shè)置成在其執(zhí)行期間使用源紋理圖和目的紋理圖??删幊虉D形處理單元可以在步驟450中執(zhí)行像素著色器,從而將混合模式應(yīng)用于源紋理圖和目的紋理圖的每個像素,并將填充的矩形繪制到目的呈現(xiàn)目標(biāo)中。即,可編程圖形處理單元可以組合源像素顏色和目的像素顏色,以產(chǎn)生將被放置在關(guān)于每個像素的目的呈現(xiàn)目標(biāo)中的結(jié)果顏色。將會理解像素著色器可以被開發(fā)成使用例如像素著色器匯編語言或更高級著色語言來處理混合模式(例如,這里所描述的混合模式和其他混合模式)。如果在步驟450中,將要呈現(xiàn)更多圖元,那么,過程可以從步驟420開始重復(fù)。如果在步驟450中,沒有更多圖元將要被呈現(xiàn),那么,可以顯示目的呈現(xiàn)目標(biāo)。
這里所描述的各種技術(shù)可以結(jié)合硬件或軟件或者在適當(dāng)時結(jié)合兩者的組合來實現(xiàn)。這樣,本發(fā)明的方法和裝置、或其某些方面或部分可以采取包含在諸如軟盤、CD-ROM、硬盤驅(qū)動器、或任何其他機(jī)器可讀存儲介質(zhì)等有形介質(zhì)中的程序代碼(即指令)的形式,其中,當(dāng)程序代碼被載入機(jī)器(例如,計算機(jī))并由其執(zhí)行時,該機(jī)器變成用于實現(xiàn)本發(fā)明的裝置。在可編程計算機(jī)上的程序代碼執(zhí)行的情況中,計算設(shè)備通常包括處理器、該處理器可讀的存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備、以及至少一個輸出設(shè)備。一個或多個程序較佳地用高級過程語言或面向?qū)ο蟮木幊陶Z言來實現(xiàn),以便與計算機(jī)系統(tǒng)進(jìn)行通信。但是,如果需要的話,可以用匯編或機(jī)器語言來實現(xiàn)程序。無論如何,該語言可以是編譯或解釋語言,并可以與硬件實現(xiàn)結(jié)合。
盡管已連同各圖并結(jié)合具體示例描述了本發(fā)明,但將會理解可以使用其他實施例,并可以對所描述的實施例進(jìn)行修改和添加,以在不脫離本發(fā)明的前提下執(zhí)行本發(fā)明的相同的功能。提供這些例子來解釋本發(fā)明,而決不意在限制如權(quán)利要求書中所定義的本發(fā)明的范圍??傊?,本發(fā)明不局限于這里所提供和描述的例子。所以,本發(fā)明不應(yīng)該局限于任何單一實施例,而應(yīng)該根據(jù)所附權(quán)利要求書在廣度和范圍上加以分析。
權(quán)利要求
1.一種用于代表在第一處理單元上執(zhí)行的應(yīng)用程序來執(zhí)行混合模式操作的方法,包括接收表示第一像素的顏色的第一信息;接收表示第二像素的顏色的第二信息;接收表示用于將所述第一像素的顏色與所述第二像素的顏色混合的公式的信息;以及,將所述公式應(yīng)用于所述第一信息和所述第二信息,以產(chǎn)生表示第三像素的顏色的第三信息,其中,應(yīng)用所述公式是由第二處理單元執(zhí)行的。
2.如權(quán)利要求1所述的方法,其特征在于,接收表示公式的信息包括從所述第一處理單元接收表示所述公式的信息。
3.如權(quán)利要求1所述的方法,其特征在于,接收表示公式的信息包括接收程序代碼,當(dāng)在所述第二處理單元上執(zhí)行時,所述程序代碼使所述第二處理單元應(yīng)用所述公式,以將所述第一像素的顏色與所述第二像素的顏色混合。
4.如權(quán)利要求3所述的方法,其特征在于,所述程序代碼包括像素著色器的至少一部分。
5.如權(quán)利要求3所述的方法,其特征在于,所述第一像素是源圖元的一部分,所述第二像素是目的圖元的一部分,并且其中,所述方法還包括在所述第二處理單元處接收所述目的圖元;在所述第二處理單元處接收所述源圖元;將所述程序代碼設(shè)置成使用所述源圖元和目的圖元;執(zhí)行所述程序代碼;以及,將所述第三像素繪制到目的呈現(xiàn)目標(biāo)中。
6.如權(quán)利要求5所述的方法,其特征在于,所述第二處理單元復(fù)制來自所述目的呈現(xiàn)目標(biāo)的目的圖元,以產(chǎn)生所述目的圖元的副本,以及,將所述目的圖元的副本放置在目的紋理圖中。
7.如權(quán)利要求1所述的方法,其特征在于,所述第一處理單元位于計算機(jī)上,所述第二處理單元位于該計算機(jī)上。
8.如權(quán)利要求1所述的方法,其特征在于,所述第一處理單元位于第一計算機(jī)上,所述第二處理單元位于第二計算機(jī)上。
9.如權(quán)利要求8所述的方法,其特征在于,所述第一計算機(jī)是服務(wù)器計算機(jī),所述第二計算機(jī)是所述服務(wù)器計算機(jī)的客戶機(jī)。
10.如權(quán)利要求1所述的方法,其特征在于,所述第一信息包括值R、G、B和A的集合。
11.如權(quán)利要求1所述的方法,其特征在于,所述公式是混合模式。
12.一種用于代表在第一處理單元上執(zhí)行的應(yīng)用程序執(zhí)行混合模式操作的方法,包括向第二處理單元發(fā)送表示公式的信息,所述公式用于將第一像素的顏色與第二像素的顏色混合,以創(chuàng)建第三像素的顏色;以及,指示所述第二處理單元將所述公式應(yīng)用于表示所述第一像素的顏色的第一信息和表示所述第二像素的顏色的第二信息,以創(chuàng)建表示所述第三像素的顏色的第三信息。
13.如權(quán)利要求12所述的方法,其特征在于,向所述第二處理單元發(fā)送表示公式的信息包括發(fā)送程序代碼,當(dāng)在所述第二處理單元上執(zhí)行時,所述程序代碼使所述第二處理單元應(yīng)用所述公式,用于將所述第一像素的顏色與所述第二像素的顏色混合。
14.如權(quán)利要求13所述的方法,其特征在于,所述程序代碼包括像素著色器的至少一部分。
15.如權(quán)利要求12所述的方法,其特征在于,向所述第二處理單元發(fā)送表示所述公式的信息包括從所述第一處理單元發(fā)送表示所述公式的信息。
16.如權(quán)利要求12所述的方法,其特征在于,向所述第二處理單元發(fā)送表示所述公式的信息包括從與所述第二處理單元相關(guān)聯(lián)的驅(qū)動程序發(fā)送表示所述公式的信息。
17.如權(quán)利要求12所述的方法,其特征在于,所述第一處理單元位于第一計算機(jī)上,所述第二處理單元位于第二計算機(jī)上。
18.一種具有計算機(jī)可執(zhí)行指令的計算機(jī)可讀介質(zhì),所述計算機(jī)可執(zhí)行指令用于執(zhí)行以下步驟接收表示第一像素的顏色的第一信息;接收表示第二像素的顏色的第二信息;接收表示用于將所述第一像素的顏色與所述第二像素的顏色混合的公式的信息;以及,將所述公式應(yīng)用于所述第一信息和所述第二信息,以產(chǎn)生表示第三像素的顏色的第三信息,其中,應(yīng)用所述公式是由第二處理單元代表在第一處理單元上執(zhí)行的應(yīng)用程序來執(zhí)行的。
19.如權(quán)利要求18所述的計算機(jī)可讀介質(zhì),其特征在于,還具有計算機(jī)可執(zhí)行指令,用于執(zhí)行以下步驟在所述第二處理單元處接收目的圖元;在所述第二處理單元處接收源圖元;將用于將所述公式應(yīng)用于所述第一信息和所述第二信息的程序代碼設(shè)置成使用所述源圖元和目的圖元;執(zhí)行所述程序代碼;以及,將所述第三像素繪制到目的呈現(xiàn)目標(biāo)中。
20.如權(quán)利要求19所述的計算機(jī)可讀介質(zhì),其特征在于,還具有計算機(jī)可執(zhí)行指令,用于執(zhí)行以下步驟復(fù)制來自所述目的呈現(xiàn)目標(biāo)的目的圖元,從而產(chǎn)生所述目的圖元的副本;以及,將所述目的圖元的副本放置在目的紋理圖中。
全文摘要
揭示了圖形處理單元對源圖元和目的圖元的顏色的混合。圖形處理單元執(zhí)行混合這些圖元的混合程序。圖形處理單元從中央處理單元或圖形應(yīng)用程序接收混合程序。例如,圖形處理單元在源紋理圖中繪制源圖元,在目的紋理圖中繪制目的圖元?;旌铣绦?例如,像素著色器)被設(shè)置成應(yīng)用于這些圖元,并且,圖形處理單元將混合模式應(yīng)用于這些圖元的每個像素,從而在目的呈現(xiàn)目標(biāo)中呈現(xiàn)合成圖元。
文檔編號G06T1/00GK1825353SQ20061000435
公開日2006年8月30日 申請日期2006年1月25日 優(yōu)先權(quán)日2005年2月25日
發(fā)明者E·J·斯托爾尼茨 申請人:微軟公司