亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

響應(yīng)數(shù)據(jù)率受限三維圖形數(shù)據(jù)迅速繪制圖象的方法和裝置的制作方法

文檔序號(hào):6415886閱讀:246來(lái)源:國(guó)知局
專利名稱:響應(yīng)數(shù)據(jù)率受限三維圖形數(shù)據(jù)迅速繪制圖象的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種響應(yīng)于三維圖形數(shù)據(jù)繪制圖象的方法和裝置,特別涉及一種響應(yīng)于有限數(shù)據(jù)率的諸如網(wǎng)絡(luò)的環(huán)境中的三維圖形數(shù)據(jù)來(lái)繪制圖象的方法和裝置。
背景技術(shù)
由于在個(gè)人計(jì)算機(jī)和其他圖形處理設(shè)備、例如視頻游戲中的計(jì)算能力的提高,三維計(jì)算機(jī)圖形(3D圖形)技術(shù)正變得越來(lái)越普遍。因特網(wǎng)越來(lái)越多地用于傳送包括3D圖形的內(nèi)容。家庭個(gè)人計(jì)算機(jī)(PC)用戶可以從因特網(wǎng)下載3D圖形數(shù)據(jù),并且可以使用瀏覽器來(lái)繪制、顯示這些內(nèi)容并與其交互。
3D圖形的繪制技術(shù)已經(jīng)被開發(fā)了很長(zhǎng)時(shí)間。最新的技術(shù)已經(jīng)在可以插進(jìn)在家庭PC中使用的圖形適配器中的擴(kuò)展硬件中實(shí)現(xiàn)。PC和圖形硬件的性能上的提高使得可以繪制的圖形的復(fù)雜性增大。然而,當(dāng)3D圖形數(shù)據(jù)的來(lái)源是具有有限數(shù)據(jù)傳輸率的網(wǎng)絡(luò)時(shí),當(dāng)由圖形數(shù)據(jù)表示的圖象很復(fù)雜時(shí),對(duì)于3D圖形數(shù)據(jù)需要長(zhǎng)的下載時(shí)間。因特網(wǎng)就是這種網(wǎng)絡(luò)的一個(gè)例子。已知的可以在與網(wǎng)絡(luò)相連的客戶機(jī)上運(yùn)行的瀏覽器程序在能夠開始執(zhí)行響應(yīng)于3D圖形數(shù)據(jù)顯示圖象所必須的圖形繪制計(jì)算之前需要將幾乎全部3D圖形數(shù)據(jù)從服務(wù)器上下載下來(lái)。其結(jié)果為,用戶在圖象開始顯示之前必須等待大部分下載時(shí)間。常規(guī)3D圖形繪制程序的處理結(jié)構(gòu)使得在這種程序開始顯示圖象之前有一個(gè)長(zhǎng)的延遲。
在3D圖形中,定義了具有一個(gè)或多個(gè)三維對(duì)象的三維空間。還定義了三維空間中每個(gè)對(duì)象上的基準(zhǔn)點(diǎn)的位置。每個(gè)對(duì)象的形狀由一組覆蓋對(duì)象表面的多邊形定義。例如,等邊立方體可以用六個(gè)方多邊形(正方形)定義,每個(gè)正方形等于立方體的一個(gè)面。為每個(gè)多邊形定義尺寸、形狀和坐標(biāo)。另外,還可以定義顏色和反射率。然而,如果對(duì)象的一個(gè)表面的全部或部分帶有圖案,則表示該表面的多邊形必須分成多個(gè)子多邊形,以便可以通過(guò)向子多邊形分配不同的顏色和反射率來(lái)表示該圖案。這相當(dāng)大地增大了表示該對(duì)象所需的數(shù)據(jù)量。
因此,如果將要以不止為基本的圖案形成來(lái)繪制對(duì)象的表面,則最好用紋理定義表面的外觀(appearance)。紋理是一組表示從基本位圖到復(fù)雜圖象的任意復(fù)雜度的圖案的數(shù)據(jù)。該組數(shù)據(jù)可以包括例如定義圖案的圖象映射數(shù)據(jù)。表示其外觀由紋理定義的對(duì)象的表面部分的多邊形采用紋理來(lái)平鋪顯示。在采用紋理時(shí),具有復(fù)雜表面外觀的對(duì)象可以用比采用增大數(shù)目的多邊形表示該表面所需要的數(shù)據(jù)更少的數(shù)據(jù)來(lái)表示。
當(dāng)具有三維對(duì)象的三維空間被顯示為二維屏幕、例如計(jì)算機(jī)監(jiān)視器的屏幕上的圖象時(shí),首先由用戶選擇一個(gè)視點(diǎn)或由圖形數(shù)據(jù)定義一個(gè)視點(diǎn)。照明的一個(gè)或多個(gè)來(lái)源也可以被定義或選擇。還可以定義位于視點(diǎn)和三維空間之間的虛平面,即所謂的繪制屏幕。將繪制屏幕分成一個(gè)排列中的象素(pixel),所述排列最好對(duì)應(yīng)于用于顯示圖象的象素的數(shù)目。例如,如果要在NTSC電視或VGA計(jì)算機(jī)顯示器的屏幕上顯示圖象,則繪制屏幕最好被分成640×480個(gè)象素。然后繪制程序計(jì)算構(gòu)成繪制屏幕的每個(gè)象素的色值。每個(gè)象素的色值一般包括紅色值、綠色值和藍(lán)色值。然而,也可以使用不同的色值、例如亮度和色差。然后響應(yīng)于象素的色值顯示圖象。這例如可以通過(guò)將色值從3D圖形擴(kuò)展硬件傳送到計(jì)算機(jī)的圖形適配器的視頻存儲(chǔ)器來(lái)完成。
采用所謂的Z緩沖的常規(guī)3D圖形繪制程序可以如下操作1.加載階段通過(guò)網(wǎng)絡(luò)從服務(wù)器或從本地文件加載圖形數(shù)據(jù)的全集。
2.幾何階段計(jì)算多邊形在繪制屏幕上的投影。這些計(jì)算的結(jié)果包括表明每個(gè)多邊形的每個(gè)頂點(diǎn)距視點(diǎn)的深度的景深值。
3.光柵化階段執(zhí)行陰影(shading)和隱藏表面去除操作。執(zhí)行光柵化操作,將投影多邊形變換成對(duì)應(yīng)于繪制屏幕的象素的對(duì)象象素,并為每個(gè)對(duì)象象素計(jì)算一組色值。因?yàn)閷?duì)象是三維的,所以有不止一個(gè)多邊形投影在繪制屏幕的一給定象素上。因此,產(chǎn)生不止一個(gè)對(duì)象象素的色值和景深值,在該處,多邊形重疊在繪制屏幕上。將色值和景深值登記在具有對(duì)應(yīng)于繪制屏幕的象素的存儲(chǔ)單元的象素和景深緩沖器中。在這個(gè)登記過(guò)程中,當(dāng)對(duì)于一給定繪制屏幕象素已經(jīng)產(chǎn)生不止一個(gè)對(duì)象象素時(shí),比較景深值以確定哪一個(gè)對(duì)象象素可見。只有對(duì)應(yīng)于最小景深值的色值和景深值、即可見對(duì)象象素的那些值被存儲(chǔ)在象素和景深緩沖器中。這個(gè)操作有效地去除了隱藏表面、即不能從視點(diǎn)看見的表面。
4.顯示階段在由幾何和光柵化階段處理了所有多邊形之后,輸出象素緩沖器的內(nèi)容以進(jìn)行顯示。
在光柵化(rasterizing)階段,陰影操作計(jì)算每個(gè)對(duì)象象素的色值。這個(gè)步驟還計(jì)算每個(gè)象素的一組亮度系數(shù),并將象素的初始色值乘以相應(yīng)的亮度系數(shù),以獲得象素色值。該組亮度系數(shù)一般也包括紅、綠和藍(lán)亮度系數(shù)。亮度系數(shù)定義了照明效果,并取決于對(duì)象象素所處多邊形的材料特性、每個(gè)光源的顏色、位置和方向、以及視點(diǎn)的位置和方向。已經(jīng)存在各種用于計(jì)算亮度系數(shù)的方法。多邊形的初始顏色是定義多邊形特性的圖形數(shù)據(jù)的一部分。如上所述,多邊形的初始顏色可以定義為直接顏色或紋理。當(dāng)采用直接顏色時(shí),將直接顏色本身用作為初始顏色。當(dāng)在多邊形上映射紋理時(shí),從表示紋理的圖案數(shù)據(jù)計(jì)算多邊形的每個(gè)對(duì)象象素的初始顏色。
定義每個(gè)對(duì)象象素的初始顏色的紋理的圖案數(shù)據(jù)由如下過(guò)程確定1.對(duì)于繪制屏幕的每個(gè)象素坐標(biāo)(X,Y),計(jì)算相聯(lián)系的紋理坐標(biāo)(s,t);以及2.從位于紋理坐標(biāo)(s,t)上或附近的一個(gè)或多個(gè)紋理象素的圖案數(shù)據(jù)取得或內(nèi)插出象素顏色。
在最簡(jiǎn)單的實(shí)施方式中,采用單組紋理圖案數(shù)據(jù)作為每個(gè)對(duì)象象素的色值。每組圖案數(shù)據(jù)通常也包括紅、綠和藍(lán)圖案數(shù)據(jù)。然而,這個(gè)簡(jiǎn)單的紋理采樣方法經(jīng)常產(chǎn)生討厭的方塊和波紋圖案。紋理濾波(filtering)技術(shù)常常用于通過(guò)在表示紋理的多個(gè)圖案數(shù)據(jù)中內(nèi)插來(lái)計(jì)算一組單個(gè)色值。例如,所謂的Multum in Parvo(MIP)圖以多分辨率塔形數(shù)據(jù)格式存儲(chǔ)紋理圖象。定義每個(gè)對(duì)象象素的顏色的該組色值是采用兩級(jí)內(nèi)插產(chǎn)生的。第一個(gè)內(nèi)插操作在同一級(jí)的圖案數(shù)據(jù)之間的兩個(gè)級(jí)別上執(zhí)行,即所謂的層內(nèi)內(nèi)插。執(zhí)行兩個(gè)層內(nèi)內(nèi)插操作,每個(gè)內(nèi)插操作都在同一級(jí)的圖案數(shù)據(jù)之間的兩個(gè)相鄰級(jí)別中的一個(gè)不同級(jí)別上執(zhí)行。然后,在兩個(gè)層內(nèi)內(nèi)插操作的結(jié)果之間執(zhí)行層間內(nèi)插操作。整個(gè)過(guò)程被稱為三線內(nèi)插。
常規(guī)3D圖形繪制程序需要在加載階段接收所有紋理數(shù)據(jù)。然而,不是所有紋理都產(chǎn)生在最終繪制成的圖象中可見的結(jié)果。在后面和剪輯多邊形上的紋理在光柵化階段不進(jìn)行處理,并且,從加在封閉多邊形上的紋理導(dǎo)出的對(duì)象象素在最終圖象中不顯示,因?yàn)樗鼈冊(cè)陔[藏表面去除操作中都被舍棄了。將紋理作為帶有單個(gè)高分辨率的位圖來(lái)提供的常規(guī)技術(shù)還延長(zhǎng)了繪制時(shí)間。這是因?yàn)楫?dāng)其上映射有紋理的多邊形遠(yuǎn)離視點(diǎn)或處于相對(duì)于視點(diǎn)為斜角時(shí)產(chǎn)生高分辨率紋理所需的許多位圖數(shù)據(jù)可能都是多余的。在這些情況下,較低分辨率的紋理則足夠。在采用常規(guī)3D圖形繪制程序的情況下,在常規(guī)加載階段加載紋理之前確定哪些紋理和紋理分辨率是繪制圖象所必須的是不可能的,因?yàn)榇藭r(shí)還沒有計(jì)算出幾何。其結(jié)果為,常規(guī)3D圖形繪制程序需要在加載階段加載所有紋理,并且需要以其最高分辨率加載。
多邊形的數(shù)目一般比紋理尺寸對(duì)繪制時(shí)間的影響要大得多。因此,應(yīng)用一般試圖通過(guò)減少多邊形數(shù)目并增大紋理的使用來(lái)減少提供真實(shí)自然的3D圖象所必須的計(jì)算能力。然而,在這樣做時(shí),所產(chǎn)生的大量紋理數(shù)據(jù)會(huì)延長(zhǎng)加載時(shí)間,特別是在網(wǎng)絡(luò)環(huán)境下。
發(fā)明概述本發(fā)明提供了一個(gè)響應(yīng)于三維圖形數(shù)據(jù)繪制圖象的繪制裝置。繪制裝置包括一個(gè)輸入路徑,繪制裝置通過(guò)該輸入路徑可以接收三維圖形數(shù)據(jù),還包括象素/景深緩沖器、基準(zhǔn)緩沖器和繪制機(jī)。三維圖形數(shù)據(jù)包括多邊形數(shù)據(jù),另外還包括定義紋理的紋理數(shù)據(jù)。紋理數(shù)據(jù)包括紋理尺寸數(shù)據(jù)和圖案數(shù)據(jù)組。圖案數(shù)據(jù)構(gòu)成紋理數(shù)據(jù)的主要部分。象素/景深緩沖器和基準(zhǔn)緩沖器分別包括對(duì)應(yīng)于繪制屏幕的象素的第一存儲(chǔ)器單元和第二存儲(chǔ)器單元。繪制機(jī)執(zhí)行初始光柵化操作,僅僅采用多邊形和紋理尺寸數(shù)據(jù)來(lái)為繪制屏幕的每個(gè)象素產(chǎn)生紋理標(biāo)識(shí)符、表明紋理分辨率的層深值以及紋理坐標(biāo),并存儲(chǔ)在基準(zhǔn)緩沖器中。繪制機(jī)還響應(yīng)每個(gè)繪制屏幕象素的存儲(chǔ)在基準(zhǔn)緩沖器中的紋理標(biāo)識(shí)符、層深和紋理坐標(biāo)來(lái)識(shí)別繪制圖象所需的一些圖案數(shù)據(jù)。繪制機(jī)通過(guò)路徑來(lái)獲得被識(shí)別為繪制圖象所需的那些圖案數(shù)據(jù)。最后,繪制機(jī)采用通過(guò)路徑獲得的圖案數(shù)據(jù)來(lái)產(chǎn)生表示圖象的圖象數(shù)據(jù)。路徑具有明顯小于繪制機(jī)與緩沖器之間的數(shù)據(jù)傳輸率的數(shù)據(jù)傳輸率。
繪制裝置還可以包括紋理存儲(chǔ)器,圖案數(shù)據(jù)以塔形數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在其中。塔形數(shù)據(jù)結(jié)構(gòu)包括多層,每一層中存儲(chǔ)著一相應(yīng)組的代表具有不同分辨率的紋理的圖案數(shù)據(jù)。這些圖案數(shù)據(jù)中的一組表示具有最高分辨率的紋理。
繪制圖象所需的圖案數(shù)據(jù)可以由通過(guò)路徑加載圖案數(shù)據(jù)或從表示具有較高分辨率的紋理的一組圖案數(shù)據(jù)的圖案數(shù)據(jù)綜合圖案數(shù)據(jù)來(lái)獲得。
層深值可以是具有整數(shù)部分和分?jǐn)?shù)部分的實(shí)數(shù)。當(dāng)層深值的分?jǐn)?shù)部分是零時(shí),繪制機(jī)可以在由層深值的整數(shù)部分所指示的一組圖案數(shù)據(jù)中的圖案數(shù)據(jù)中執(zhí)行第一層內(nèi)內(nèi)插,以產(chǎn)生紋理色值,從該紋理色值可以導(dǎo)出圖象數(shù)據(jù)。然而,當(dāng)層深值的分?jǐn)?shù)部分不為零時(shí),繪制機(jī)執(zhí)行第一層內(nèi)內(nèi)插,在具有比所述組高一級(jí)的分辨率的另一組中的圖案數(shù)據(jù)中執(zhí)行第二層內(nèi)內(nèi)插,并在由第一和第二層內(nèi)內(nèi)插產(chǎn)生的結(jié)果之間執(zhí)行層間內(nèi)插,以產(chǎn)生可以導(dǎo)出圖象數(shù)據(jù)的紋理色值。
本發(fā)明還提供了響應(yīng)三維圖形數(shù)據(jù)繪制圖象的方法。圖象由對(duì)應(yīng)于繪制屏幕的象素的圖象數(shù)據(jù)表示。三維圖形數(shù)據(jù)包括多邊形數(shù)據(jù),另外還包括定義紋理的紋理數(shù)據(jù)。紋理數(shù)據(jù)包括紋理尺寸數(shù)據(jù)和多組圖案數(shù)據(jù)。每組中的圖案數(shù)據(jù)表示具有不同分辨率的紋理。圖案數(shù)據(jù)構(gòu)成紋理數(shù)據(jù)的的主要部分。在該方法中,接收多邊形和紋理尺寸數(shù)據(jù)。為繪制屏幕的每個(gè)象素執(zhí)行初始光柵化操作。采用多邊形和紋理尺寸數(shù)據(jù)來(lái)執(zhí)行初始光柵化操作,產(chǎn)生并存儲(chǔ)紋理標(biāo)識(shí)符、表明紋理分辨率的層深值以及紋理坐標(biāo)。響應(yīng)為每個(gè)繪制屏幕象素存儲(chǔ)的紋理標(biāo)識(shí)符、層深和紋理坐標(biāo)執(zhí)行圖案數(shù)據(jù)識(shí)別操作。圖案數(shù)據(jù)識(shí)別操作識(shí)別繪制圖象所需的一些圖案數(shù)據(jù)。然后執(zhí)行圖案數(shù)據(jù)獲取操作。這個(gè)操作獲取由圖案數(shù)據(jù)識(shí)別操作識(shí)別為繪制圖象所需的那些圖案數(shù)據(jù)。然后執(zhí)行最后的光柵化操作。在該操作中,采用由圖案數(shù)據(jù)獲取操作獲取的圖案數(shù)據(jù)產(chǎn)生表示圖象的圖象數(shù)據(jù)。
本發(fā)明通過(guò)提供響應(yīng)3D圖形數(shù)據(jù)產(chǎn)生圖象的新的處理裝置和繪制方法,顯著減少了在圖象出現(xiàn)在屏幕上之前用戶必須等待的時(shí)間。在依據(jù)本發(fā)明的繪制裝置和方法中,直到已經(jīng)完成初始的第一光柵化操作之后,才獲取表示紋理的圖案數(shù)據(jù)。圖案數(shù)據(jù)通過(guò)加載或從塔形數(shù)據(jù)結(jié)構(gòu)的高分辨率層的圖案數(shù)據(jù)合成而獲得。在獲取圖案數(shù)據(jù)之前執(zhí)行初始光柵化操作意味著只有定義以所需分辨率繪制圖象所需的紋理的部分的圖案數(shù)據(jù)才被獲取以繪制圖象。這樣,則必須從服務(wù)器加載或合成的圖案數(shù)據(jù)的數(shù)目減少,從而等待時(shí)間也減少。
依據(jù)本發(fā)明的繪制裝置包括保存由初始繪制操作產(chǎn)生的中間結(jié)果的基準(zhǔn)緩沖器,其中,初始繪制操作是在沒有圖案數(shù)據(jù)的情況下執(zhí)行的。這使得圖案數(shù)據(jù)的獲取及紋理象素的色值的內(nèi)插能夠被推遲。通過(guò)采用基準(zhǔn)緩沖器的內(nèi)容,由于只加載所需的圖案數(shù)據(jù),所以本發(fā)明允許高效地獲得圖案數(shù)據(jù)。本發(fā)明還提供了顯示的兩個(gè)替換方法,“最佳分辨率”和“漸進(jìn)分辨率”,這將在下面進(jìn)行描述。
附圖簡(jiǎn)要說(shuō)明

圖1是依據(jù)本發(fā)明的包括繪制裝置和實(shí)施繪制方法的3D圖形繪制系統(tǒng)的結(jié)構(gòu)的方框圖。
圖2顯示了依據(jù)本發(fā)明的繪制裝置和方法中用于存儲(chǔ)紋理的圖案數(shù)據(jù)的多分辨率塔形數(shù)據(jù)結(jié)構(gòu)。
圖3A和3B顯示了當(dāng)象素的色值分別是直接計(jì)算出以及采用紋理色值計(jì)算出時(shí)基準(zhǔn)緩沖器的對(duì)應(yīng)于繪制屏幕的一個(gè)象素的一個(gè)單元的數(shù)據(jù)結(jié)構(gòu)。
圖4A是顯示依據(jù)本發(fā)明的圖象繪制方法的流程圖。
圖4B是顯示依據(jù)本發(fā)明的圖象繪制方法的更加詳細(xì)的流程圖。
圖5A是表明瓦片的子程序的流程圖,其圖案數(shù)據(jù)必須通過(guò)加載或合成來(lái)獲取,以繪制圖象。
圖5B是用于確定紋理象素是否位于瓦片的邊界上、以及如果是的話用于表明必須獲取其圖案數(shù)據(jù)的附加瓦片的子程序的流程圖。
圖6是用于獲取由圖5A所示子程序表明的瓦片的圖案數(shù)據(jù)的子程序的流程圖。
圖7A是用于內(nèi)插紋理色值和以最佳分辨率顯示方式產(chǎn)生繪制屏幕的象素的最終色值的子程序的流程圖。
圖7B是用于內(nèi)插紋理色值和以漸進(jìn)分辨率顯示方式產(chǎn)生繪制屏幕的象素的最終色值的子程序的流程圖。
發(fā)明的詳細(xì)說(shuō)明本發(fā)明涉及一種想要用在數(shù)據(jù)傳輸率受限的環(huán)境、例如諸如因特網(wǎng)的網(wǎng)絡(luò)中的圖象繪制裝置和方法。圖1是依據(jù)本發(fā)明的繪制裝置100的方框圖。繪制裝置例如處于計(jì)算機(jī)102中。在一個(gè)實(shí)際的實(shí)施例中,繪制裝置可以形成位于計(jì)算機(jī)中的圖形卡(未顯示)的一部分。或者,繪制裝置可以是插入或與計(jì)算機(jī)的圖形卡相連的硬件附件。
所示計(jì)算機(jī)102通過(guò)I/O端口104連接為網(wǎng)絡(luò)106的客戶機(jī)。I/O端口與總線108直接或間接相連,繪制裝置和計(jì)算機(jī)的其他元件也連接到該總線上。網(wǎng)絡(luò)、I/O端口和總線構(gòu)成了一個(gè)路徑,繪制裝置通過(guò)該路徑接收包括定義一個(gè)或多個(gè)紋理的紋理數(shù)據(jù)的三維圖形數(shù)據(jù)。
如圖所示,連接到總線108的是視頻輸出端口116,通過(guò)該端口將由繪制裝置100產(chǎn)生的繪制屏幕象素的最終色值傳送給監(jiān)視器150進(jìn)行顯示。
還與網(wǎng)絡(luò)106相連的是服務(wù)器110,服務(wù)器110包括共同存儲(chǔ)3D圖形數(shù)據(jù)的存儲(chǔ)器112和114。存儲(chǔ)器112存儲(chǔ)用于定義3D圖形中的對(duì)象表面的拓?fù)浣Y(jié)構(gòu)的多邊形數(shù)據(jù)。存儲(chǔ)器114存儲(chǔ)用于定義運(yùn)用到一個(gè)或多個(gè)表面上的紋理的紋理數(shù)據(jù)。定義紋理外觀的圖案數(shù)據(jù)構(gòu)成了紋理數(shù)據(jù)的相當(dāng)大的主要部分。紋理數(shù)據(jù)還包括諸如紋理高度和寬度數(shù)據(jù)的數(shù)據(jù)。
另外或可替換地,3D圖形數(shù)據(jù)可以存儲(chǔ)在計(jì)算機(jī)102中。在這種情況下,等效于存儲(chǔ)器112和114的存儲(chǔ)部分位于諸如硬盤的存儲(chǔ)器(未顯示)中,所述存儲(chǔ)器位于計(jì)算機(jī)中并與總線108直接或間接相連。例如,從服務(wù)器110加載的3D圖形可以高速緩存在計(jì)算機(jī)的硬盤上。在這種情況下,硬盤和總線構(gòu)成了繪制裝置接收三維圖形數(shù)據(jù)、包括定義一個(gè)或多個(gè)紋理的紋理數(shù)據(jù)的路徑。
在繪制裝置100中,繪制機(jī)120與總線108相連。繪制機(jī)運(yùn)行繪制程序122以便響應(yīng)3D圖形數(shù)據(jù)執(zhí)行繪制操作。繪制操作產(chǎn)生指定二維圖象的一組象素?cái)?shù)據(jù)。繪制機(jī)執(zhí)行依據(jù)本發(fā)明的方法。繪制機(jī)可以用微處理器、數(shù)字信號(hào)處理器、一個(gè)或多個(gè)特定用途集成電路或通用集成電路構(gòu)成,并且可以包括使得其能執(zhí)行這里所述處理的其他元件,例如只讀和隨機(jī)存取存儲(chǔ)器。
繪制裝置100另外還包括象素/景深緩沖器124和基準(zhǔn)緩沖器126。象素/景深緩沖器和基準(zhǔn)緩沖器或者直接通過(guò)總線108或者由一些其他結(jié)構(gòu)連接到繪制機(jī)120。在繪制機(jī)和緩沖器之間的數(shù)據(jù)傳輸率遠(yuǎn)遠(yuǎn)大于三維圖形數(shù)據(jù)通過(guò)路徑、即從網(wǎng)絡(luò)106或從計(jì)算機(jī)的硬盤驅(qū)動(dòng)器接收的速率。
象素/景深緩沖器124和基準(zhǔn)緩沖器126最好每個(gè)都包括多字節(jié)存儲(chǔ)單元。每個(gè)單元最好對(duì)應(yīng)于繪制屏幕的一個(gè)象素。在由繪制機(jī)120執(zhí)行的每個(gè)繪制操作期間,象素/景深緩沖器按順序第一個(gè)用作為景深緩沖器,第二個(gè)用作為象素緩沖器。一般地,常規(guī)繪制裝置也包括景深緩沖器和象素緩沖器,但常規(guī)裝置在執(zhí)行隱藏表面去除操作時(shí)同時(shí)使用緩沖器,因此不能將一單個(gè)緩沖器用于兩個(gè)功能。在依據(jù)本發(fā)明的繪制裝置中,景深緩沖器和象素緩沖器不需要同時(shí)使用,所以兩個(gè)緩沖器的功能可以由物理存儲(chǔ)器的一單個(gè)部分執(zhí)行。依據(jù)本發(fā)明的繪制裝置100使用基準(zhǔn)緩沖器126來(lái)存儲(chǔ)由紋理計(jì)算產(chǎn)生的中間結(jié)果,這將在下面詳細(xì)說(shuō)明。
繪制裝置100還包括與總線108相連的紋理數(shù)據(jù)存儲(chǔ)器130。紋理數(shù)據(jù)存儲(chǔ)器被分成多頁(yè),在132顯示了該頁(yè)的一個(gè)例子。在每頁(yè)中存儲(chǔ)一個(gè)紋理的紋理數(shù)據(jù)。紋理數(shù)據(jù)存儲(chǔ)器的每頁(yè)被分成多個(gè)區(qū),在這些區(qū)中存儲(chǔ)著表示紋理的紋理數(shù)據(jù)的子集。在圖1所示的例子中,頁(yè)132包括最大層深存儲(chǔ)器133、塔形圖案數(shù)據(jù)存貯器134、瓦片(tile)加載列表136、瓦片間距陣列138和瓦片基數(shù)陣列140。
將表示紋理的圖案數(shù)據(jù)以多分辨率塔形數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在塔形圖案數(shù)據(jù)存儲(chǔ)器134中,該多分辨率塔形數(shù)據(jù)結(jié)構(gòu)將在下面詳細(xì)描述。瓦片加載列表136包括紋理被分成的每個(gè)瓦片的一個(gè)入口,這將在下面詳細(xì)描述。該入口表明瓦片的圖案數(shù)據(jù)的獲取狀態(tài),即瓦片的圖案數(shù)據(jù)是否已經(jīng)被獲得,以及這種圖案數(shù)據(jù)是否需要獲得。瓦片間距陣列138和瓦片基數(shù)陣列140每個(gè)都包括塔形數(shù)據(jù)結(jié)構(gòu)的每層的一個(gè)入口。瓦片間距陣列的入口表明在該層的每行中的瓦片數(shù)目。瓦片基數(shù)陣列中的入口表明該層的左上角的瓦片號(hào)。瓦片基數(shù)陣列可以包括一個(gè)附加入口,在該入口中存儲(chǔ)著瓦片的總數(shù)。下面將詳細(xì)描述存儲(chǔ)在紋理存儲(chǔ)器的每頁(yè)中的紋理數(shù)據(jù)。
圖2顯示了存儲(chǔ)表示每個(gè)紋理的圖案數(shù)據(jù)的多分辨率塔形數(shù)據(jù)結(jié)構(gòu)200的結(jié)構(gòu)。多分辨率塔形數(shù)據(jù)結(jié)構(gòu)基于在商標(biāo)FLASHPIX下出售的常規(guī)的二維圖形系統(tǒng)。這個(gè)二維圖形系統(tǒng)采用多分辨率塔形數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)表示二維圖象、例如照片等的數(shù)據(jù)。在依據(jù)本發(fā)明的繪制裝置和方法中,每個(gè)紋理的圖案數(shù)據(jù)存儲(chǔ)在塔形數(shù)據(jù)結(jié)構(gòu)中,在該塔形數(shù)據(jù)結(jié)構(gòu)中,將多組圖案數(shù)據(jù)排列在多層中,每組圖案數(shù)據(jù)表示具有不同分辨率的紋理。將這些層從頂層向下編號(hào),頂層為層0。一層在塔形結(jié)構(gòu)中的位置由該層的層深表示。存儲(chǔ)最低分辨率圖案數(shù)據(jù)的頂層的層深為0。在圖2所示例子中,存儲(chǔ)最高分辨率圖案數(shù)據(jù)的層的層深是4。然而,塔形數(shù)據(jù)結(jié)構(gòu)可以包括比在該例子中所示數(shù)目更多或更少的層數(shù)。
塔形數(shù)據(jù)結(jié)構(gòu)200的每層中的圖案數(shù)據(jù)以在下一層中的圖案數(shù)據(jù)表示紋理的分辨率的一半的分辨率來(lái)表示紋理,以上一層中的圖案數(shù)據(jù)表示紋理的分辨率的兩倍的分辨率來(lái)表示紋理。
以其最高分辨率表示紋理的圖案數(shù)據(jù)構(gòu)成了塔形數(shù)據(jù)結(jié)構(gòu)200的底層202。通常,最高分辨率與紋理的初始分辨率一樣。然而,如果初始分辨率高于應(yīng)用所需的最大分辨率,則最高分辨率可以小于初始分辨率。將底層中四個(gè)相鄰象素的圖案數(shù)據(jù)結(jié)合起來(lái),以產(chǎn)生底層的上一層203中的一個(gè)象素的圖案數(shù)據(jù)。因此,層203中的圖案數(shù)據(jù)表示具有線性分辨率的紋理,該線性分辨率在每個(gè)方向上都為底層的圖案數(shù)據(jù)的分辨率的一半。層203中圖案數(shù)據(jù)的個(gè)數(shù)是底層202中圖案數(shù)據(jù)的個(gè)數(shù)的四分之一。執(zhí)行上述結(jié)合過(guò)程以便從下一層中的圖案數(shù)據(jù)產(chǎn)生每個(gè)剩余層204-206中的圖案數(shù)據(jù)。
在塔形數(shù)據(jù)結(jié)構(gòu)200的頂層206中,由a個(gè)水平象素和b個(gè)垂直象素的陣列的圖案數(shù)據(jù)表示紋理。在最佳實(shí)施例中,a=b=64。應(yīng)該注意,塔形數(shù)據(jù)結(jié)構(gòu)200與常規(guī)的塔形數(shù)據(jù)結(jié)構(gòu)、例如MIP數(shù)據(jù)結(jié)構(gòu)不同。在塔形數(shù)據(jù)結(jié)構(gòu)200中,一個(gè)瓦片的圖案數(shù)據(jù)存儲(chǔ)在頂層中。在常規(guī)塔形數(shù)據(jù)結(jié)構(gòu)中,一個(gè)象素的圖案數(shù)據(jù)存儲(chǔ)在頂層中。
可以將塔形數(shù)據(jù)結(jié)構(gòu)200的低于頂層206的每層分成多個(gè)瓦片,每個(gè)瓦片包括a×b象素的陣列。在210顯示了一個(gè)瓦片的例子。瓦片是獲得圖案數(shù)據(jù)的單位。將圖案數(shù)據(jù)以瓦片為單位從服務(wù)器110加載,并且,如上所述,另外或可選地可從位于客戶機(jī)102的存儲(chǔ)器(未顯示)傳輸。將塔形數(shù)據(jù)結(jié)構(gòu)200的每層分成4D個(gè)瓦片,其中D是該層的層深,頂層206的層深為0。
每層中的圖案數(shù)據(jù)一般構(gòu)成表示紋理的圖象映射。然而,當(dāng)圖案數(shù)據(jù)通過(guò)網(wǎng)絡(luò)106傳送到繪制裝置時(shí),例如,可以壓縮圖象映射數(shù)據(jù),以減少傳輸時(shí)間。例如,可以采用JPEG壓縮來(lái)壓縮圖象映射數(shù)據(jù),以產(chǎn)生用于傳輸?shù)膱D案數(shù)據(jù)。然而,壓縮的圖案數(shù)據(jù)在存儲(chǔ)在塔形數(shù)據(jù)結(jié)構(gòu)之前被擴(kuò)展成位圖的形式。
將圖案數(shù)據(jù)存儲(chǔ)在塔形數(shù)據(jù)結(jié)構(gòu)200的每層202-206中。層202-206中的每層具有層深D,其中D為整數(shù),即0,1,2,...,n。然而,當(dāng)繪制機(jī)120計(jì)算要運(yùn)用到一給定對(duì)象象素上的紋理的最優(yōu)分辨率時(shí)(這將在后面詳細(xì)描述),由該計(jì)算產(chǎn)生的層深是一個(gè)實(shí)數(shù),即,層深除了整數(shù)部分之外還可以具有分?jǐn)?shù)部分。這樣的層深與塔形數(shù)據(jù)結(jié)構(gòu)的物理層不一致。在這種情況下,繪制機(jī)120為具有非整數(shù)層深的層計(jì)算圖案數(shù)據(jù)。這種圖案數(shù)據(jù)是通過(guò)在存儲(chǔ)在具有等于層深D的整數(shù)部分的整數(shù)層深DL的層中存儲(chǔ)的圖案數(shù)據(jù)以及存儲(chǔ)在具有整數(shù)層深DG=DL+1的層中存儲(chǔ)的圖案數(shù)據(jù)中進(jìn)行內(nèi)插來(lái)計(jì)算的。例如,繪制機(jī)通過(guò)在層深為2和3的層的圖案數(shù)據(jù)中內(nèi)插,為層深為2.3的層計(jì)算圖案數(shù)據(jù)。
如上所述,繪制緩沖器126存儲(chǔ)為繪制屏幕的每個(gè)象素執(zhí)行的初始光柵化操作的結(jié)果。該結(jié)果在以后執(zhí)行最終光柵化操作時(shí)使用?;鶞?zhǔn)緩沖器可以在存儲(chǔ)器、例如隨機(jī)存取存儲(chǔ)器的一部分中實(shí)現(xiàn)。將存儲(chǔ)器分成多個(gè)單元,每個(gè)單元對(duì)應(yīng)于繪制屏幕的一個(gè)象素。圖3A和3B顯示了在基準(zhǔn)緩沖器126的單元中使用的用于存儲(chǔ)初始光柵化操作的結(jié)果的兩個(gè)任選數(shù)據(jù)結(jié)構(gòu)的例子。存儲(chǔ)在單元中的初始光柵化操作的結(jié)果可以是直接顏色數(shù)據(jù)或紋理數(shù)據(jù)。存儲(chǔ)在單元中的數(shù)據(jù)類型可以由存儲(chǔ)在單元的第一字段301中的位的狀態(tài)表示。圖3A顯示了當(dāng)初始光柵化操作產(chǎn)生直接顏色數(shù)據(jù)時(shí)單元的數(shù)據(jù)結(jié)構(gòu)的例子。圖3B顯示了當(dāng)初始光柵化操作產(chǎn)生紋理坐標(biāo)和亮度系數(shù)時(shí)單元的數(shù)據(jù)結(jié)構(gòu)的例子。
在初始光柵化操作中,當(dāng)從位于未運(yùn)用紋理的多邊形中的對(duì)象象素導(dǎo)出繪制屏幕象素時(shí),如上所述,通過(guò)將多邊形的直接顏色乘以其亮度系數(shù)來(lái)獲得繪制屏幕象素的最終色值。在這種情況下,存儲(chǔ)在第一字段301中的0表明初始光柵化操作產(chǎn)生直接顏色數(shù)據(jù)。乘法產(chǎn)生的最終色值一般包括紅色值、綠色值和藍(lán)色值。紅、綠和藍(lán)色值采用圖3A所示的數(shù)據(jù)結(jié)構(gòu)分別存儲(chǔ)在象素單元的字段302的R、G、B區(qū)段中。分配給單元300的存儲(chǔ)器的剩余部分306為保留的,以便當(dāng)從位于運(yùn)用了紋理的多邊形中的對(duì)象象素導(dǎo)出繪制屏幕象素時(shí)可以使用相同尺寸的單元,數(shù)據(jù)結(jié)構(gòu)是如圖3B所示的結(jié)構(gòu)。
當(dāng)從位于運(yùn)用了紋理的多邊形中的對(duì)象象素導(dǎo)出繪制屏幕象素時(shí),將1存儲(chǔ)在單元300的第一字段301中,如圖3B所示。存儲(chǔ)在單元的余下字段中的數(shù)據(jù)如下所示字段310存儲(chǔ)表明圖1中所示紋理存儲(chǔ)器301的頁(yè)的指針或索引,其中存儲(chǔ)了運(yùn)用到象素上的紋理的紋理數(shù)據(jù)。字段312存儲(chǔ)以圖2所示塔形數(shù)據(jù)結(jié)構(gòu)的底(最高分辨率)層202的象素表示的紋理坐標(biāo)(S,T)。通過(guò)將多邊形的投影矩陣和紋理映射矩陣或函數(shù)(s,t)運(yùn)用到對(duì)象象素的坐標(biāo)(X,Y)上來(lái)計(jì)算紋理坐標(biāo)S=s(X,Y)T=t(X,Y)字段314存儲(chǔ)定義如圖2所示塔形數(shù)據(jù)結(jié)構(gòu)的層的層深D,從該塔形數(shù)據(jù)結(jié)構(gòu)將取得用于計(jì)算繪制屏幕象素的最終色值的圖案數(shù)據(jù)。層深D采用下列方程式進(jìn)行計(jì)算D=Dmax-log2{max[(∂S∂X)2+(∂T∂X)2·(∂S∂Y)2+(∂T∂Y)2]}]]>其中,Dmax是圖2所示塔形數(shù)據(jù)結(jié)構(gòu)200的底層202的層深。
最后,字段316存儲(chǔ)象素的亮度系數(shù)。在這個(gè)例子中,將紅、綠和藍(lán)亮度系數(shù)分別存儲(chǔ)在字段的區(qū)段IR、IB和IB中。
在常規(guī)3D圖形繪制中,紋理坐標(biāo)(S,T)和層深D是以實(shí)數(shù)計(jì)算的,然后采用計(jì)算出的參數(shù)立即執(zhí)行層內(nèi)和層間內(nèi)插,以產(chǎn)生每個(gè)繪制屏幕象素的最終色值。然而,在依據(jù)本發(fā)明的繪制裝置和方法中,紋理坐標(biāo)(S,T)和層深D是在初始光柵化操作期間計(jì)算出來(lái)的。初始光柵化操作是在加載任何圖案數(shù)據(jù)之前執(zhí)行的。將初始光柵化操作的結(jié)果存儲(chǔ)在基準(zhǔn)緩沖器中,以供在最終光柵化操作期間計(jì)算最終色值時(shí)使用。這只在已經(jīng)獲得所需的圖案數(shù)據(jù)之后才執(zhí)行。
下面將參考圖1、2、3、4A和4B說(shuō)明依據(jù)本發(fā)明的方法和依據(jù)本發(fā)明的繪制裝置的操作。應(yīng)該指出,最初只有一小部分紋理數(shù)據(jù)從服務(wù)器進(jìn)行加載。對(duì)構(gòu)成紋理數(shù)據(jù)的絕大多數(shù)的圖案數(shù)據(jù)的獲取一直延遲到已經(jīng)完成初始光柵化操作之后。下列說(shuō)明針對(duì)的是一個(gè)例子,其中,3D圖形數(shù)據(jù)存儲(chǔ)在服務(wù)器110中,并通過(guò)網(wǎng)絡(luò)106加載。當(dāng)3D圖形數(shù)據(jù)高速緩存在計(jì)算機(jī)102中時(shí)也執(zhí)行類似的操作。
首先,參考圖4A所示的流程圖描述所述方法和繪制裝置的操作的概況。為了簡(jiǎn)化下列說(shuō)明,只描述加到要運(yùn)用紋理的繪制屏幕象素上的處理。處理從步驟400開始。
在步驟402,執(zhí)行第一加載操作。在這個(gè)步驟中,從服務(wù)器加載多邊形數(shù)據(jù)和每個(gè)紋理的寬度和高度值。每個(gè)紋理的寬度和高度值構(gòu)成了紋理的紋理數(shù)據(jù)的一小部分。此外,多邊形數(shù)據(jù)的數(shù)目相對(duì)較低。因此,執(zhí)行這個(gè)步驟只需要很短的時(shí)間。
在步驟404,執(zhí)行幾何計(jì)算。
在步驟406,執(zhí)行初始光柵化操作。初始光柵化操作與常規(guī)光柵化操作的不同之處在于,它在沒有紋理的圖案數(shù)據(jù)的情況下執(zhí)行。初始光柵化操作包括采用象素/景深緩沖器124作為景深緩沖器的隱藏表面去除操作。隱藏表面去除操作識(shí)別將被運(yùn)用到繪制屏幕的每個(gè)象素上的紋理。表明存儲(chǔ)所識(shí)別出的紋理的紋理數(shù)據(jù)的紋理存儲(chǔ)器130的頁(yè)的指針存儲(chǔ)在基準(zhǔn)緩沖器126的象素單元中。在這個(gè)步驟中,還為繪制屏幕的每個(gè)象素計(jì)算由隱藏表面去除操作識(shí)別出的紋理的層深D和紋理坐標(biāo)(S,T)以及繪制屏幕象素的亮度系數(shù)。層深、紋理坐標(biāo)和亮度系數(shù)也存儲(chǔ)在基準(zhǔn)緩沖器的象素單元中。
在步驟408,采用存儲(chǔ)在基準(zhǔn)緩沖器126中的紋理坐標(biāo)和層深來(lái)識(shí)別塔形數(shù)據(jù)結(jié)構(gòu)的必須獲取其圖案數(shù)據(jù)以繪制圖象的瓦片。
在步驟410,執(zhí)行第二加載操作。在這個(gè)步驟中,只有那些在步驟408識(shí)別的瓦片的圖案數(shù)據(jù)被獲得。圖案數(shù)據(jù)或者通過(guò)從服務(wù)器加載來(lái)獲得,或者通過(guò)合成來(lái)自下一層、即下一個(gè)較高分辨率層的圖案數(shù)據(jù)來(lái)獲得。通常,獲取只占構(gòu)成一層的瓦片的一部分的圖案數(shù)據(jù)。此外,如果已經(jīng)獲得下一較高分辨率層的所需圖案數(shù)據(jù),則因?yàn)檩^低分辨率層的圖案數(shù)據(jù)可以合成出來(lái),所以較低分辨率層的通過(guò)加載獲得其圖案數(shù)據(jù)的瓦片的部分將小于較高分辨率層的通過(guò)加載獲得其圖案數(shù)據(jù)的瓦片的部分。由于通常下載少于所有圖案數(shù)據(jù)的圖案數(shù)據(jù),所以這個(gè)步驟執(zhí)行起來(lái)比常規(guī)加載階段要快得多。
在步驟412和414,執(zhí)行最終光柵化操作。在步驟412,通過(guò)從在步驟410獲得的紋理瓦片的圖案數(shù)據(jù)進(jìn)行內(nèi)插,為繪制屏幕的每個(gè)象素計(jì)算一組紋理色值。
在步驟412,將每個(gè)象素的紋理色值乘以從基準(zhǔn)緩沖器126讀出的象素的亮度系數(shù),并將所得的象素的最終色值存儲(chǔ)在象素/景深緩沖器124中。亮度系數(shù)是在初始光柵化操作期間計(jì)算出來(lái)的。
在步驟414,將繪制屏幕的象素的最終色值變換成一個(gè)適于在監(jiān)視器150上顯示的信號(hào)。
在步驟416,執(zhí)行結(jié)束。
下面將參考圖1、2、3和4B更詳細(xì)地說(shuō)明依據(jù)本發(fā)明的方法和繪制裝置的操作。執(zhí)行從步驟450開始。
在步驟451和452,執(zhí)行第一加載操作。在該操作中,不加載圖案數(shù)據(jù)。
在步驟451,從服務(wù)器110中的存儲(chǔ)器112加載多邊形網(wǎng)格數(shù)據(jù)。多邊形網(wǎng)格數(shù)據(jù)包括指定運(yùn)用到多邊形表面的紋理的數(shù)據(jù)。
在步驟452,從服務(wù)器110的存儲(chǔ)器114加載由多邊形網(wǎng)格數(shù)據(jù)指定的每個(gè)紋理的寬度和高度。紋理的寬度和高度值構(gòu)成了上述紋理數(shù)據(jù)的一小部分。此時(shí)不加載構(gòu)成紋理數(shù)據(jù)的大多數(shù)的圖案數(shù)據(jù)。在該步驟中,還響應(yīng)于由多邊形網(wǎng)格數(shù)據(jù)指定的每個(gè)紋理的寬度和高度值執(zhí)行紋理初始化操作。在這個(gè)初始化操作中,用寬度和高度值來(lái)計(jì)算圖2所示多分辨率塔形數(shù)據(jù)結(jié)構(gòu)在最終獲得圖案數(shù)據(jù)時(shí)將用來(lái)存儲(chǔ)紋理的圖案數(shù)據(jù)的層數(shù)(Dmax+1)。還要計(jì)算出或從查找表讀出的是塔形數(shù)據(jù)結(jié)構(gòu)的每層的行中的瓦片數(shù)、以及每層的左上角瓦片的瓦片號(hào)。
Dmax的值存儲(chǔ)在紋理存儲(chǔ)器130的紋理頁(yè)132的133中。初始化操作還采用由上述層計(jì)算產(chǎn)生的結(jié)果和紋理高度和寬度值來(lái)為紋理存儲(chǔ)器的紋理頁(yè)中的每個(gè)紋理設(shè)置塔形數(shù)據(jù)結(jié)構(gòu)134、瓦片加載列表136、瓦片間距陣列138和瓦片基數(shù)陣列140。
瓦片加載列表136包括塔形數(shù)據(jù)結(jié)構(gòu)134中的每個(gè)瓦片的入口。入口存儲(chǔ)表示瓦片的獲取狀態(tài)的兩位代碼。瓦片的加載狀態(tài)具有三個(gè)狀態(tài),這三個(gè)狀態(tài)在這個(gè)公開文本中由字母N、L和E表示。實(shí)際繪制裝置中的加載狀態(tài)由上述的兩位代碼來(lái)表示。紋理初始化操作將每個(gè)瓦片的入口設(shè)置為“N”,“N”表明該瓦片的圖案數(shù)據(jù)不在該紋理的塔形數(shù)據(jù)結(jié)構(gòu)中。后來(lái),識(shí)別必須獲取其圖案數(shù)據(jù)的瓦片的操作將這樣的瓦片的瓦片加載列表中的入口設(shè)置為“L”,“L”表明在上述的第二加載操作中必須獲取該瓦片的圖案數(shù)據(jù)。第二加載操作將這些已經(jīng)獲得了圖案數(shù)據(jù)并存儲(chǔ)在塔形數(shù)據(jù)結(jié)構(gòu)中的瓦片的瓦片加載列表中的入口設(shè)置為“E”,“E”表明該瓦片的圖案數(shù)據(jù)存在于塔形數(shù)據(jù)結(jié)構(gòu)中,并可以用于繪制圖象。
瓦片間距陣列138和瓦片基數(shù)陣列140中的每一個(gè)都包括塔形數(shù)據(jù)結(jié)構(gòu)134的每一層的入口。瓦片間距陣列138中的入口存儲(chǔ)該層的瓦片間距。瓦片間距是該層的行中的瓦片數(shù)。瓦片基數(shù)陣列140中的入口存儲(chǔ)該層的瓦片基數(shù)(base)。瓦片基數(shù)是該層的左上角瓦片的瓦片號(hào)。
當(dāng)紋理由在一個(gè)正方形中排列的紋理象素的圖案數(shù)據(jù)定義時(shí),其中該正方形的大小以象素表示是2的冪,例如512×512個(gè)象素,從頂(最低分辨率)層206開始的塔形數(shù)據(jù)結(jié)構(gòu)200的層中的瓦片間距的值為1,4,16,...,4D,其中D是該層的層深,頂層的層深為0。瓦片基數(shù)的相應(yīng)值為0,1,5,21,...,
,其中k是一個(gè)指數(shù)。
當(dāng)紋理由在其大小不是2的冪的陣列中排列的紋理象素的圖案數(shù)據(jù)定義時(shí),需要更復(fù)雜的計(jì)算來(lái)產(chǎn)生瓦片間距和瓦片基數(shù)(base)。這種計(jì)算在需要時(shí)在步驟452中執(zhí)行。注意,在步驟452完成時(shí),對(duì)于紋理還未獲得任何圖案數(shù)據(jù)。
在步驟453,執(zhí)行常規(guī)幾何階段操作。在這個(gè)步驟中,計(jì)算多邊形在繪制屏幕上的投影。
在步驟454,執(zhí)行初始光柵化操作。在這個(gè)步驟中,將步驟453計(jì)算出的多邊形在繪制屏幕上的投影變換成對(duì)象象素,并為每個(gè)對(duì)象象素執(zhí)行景深計(jì)算,以供隱藏表面去除中使用。景深計(jì)算最好采用象素/景深緩沖器124來(lái)登記對(duì)象象素的景深值?;蛘?,也可以使用與象素緩沖器無(wú)關(guān)的景深緩沖器。當(dāng)對(duì)象象素重疊時(shí),只有具有最小景深值的對(duì)象象素被登記在緩沖器中,從而執(zhí)行了隱藏表面去除。
景深計(jì)算定義了對(duì)應(yīng)于繪制屏幕的每個(gè)象素的對(duì)象象素。對(duì)于對(duì)應(yīng)于位于要運(yùn)用紋理的多邊形中的對(duì)象象素的繪制屏幕象素,將基準(zhǔn)緩沖器126中的象素單元300的字段301設(shè)置為1,將存儲(chǔ)著紋理的紋理數(shù)據(jù)的紋理存儲(chǔ)器130的頁(yè)地址輸入進(jìn)單元的字段310中。對(duì)于對(duì)應(yīng)于位于其顏色由直接顏色計(jì)算確定的多邊形中的對(duì)象象素的繪制屏幕象素,將基準(zhǔn)緩沖器126中的象素單元300的字段301設(shè)置為0。
對(duì)于對(duì)應(yīng)于位于不運(yùn)用紋理的多邊形中的每個(gè)對(duì)象象素的繪制屏幕象素,如基準(zhǔn)緩沖器126中繪制屏幕象素單元300的字段301中的0所示,執(zhí)行常規(guī)陰影計(jì)算。陰影計(jì)算產(chǎn)生該象素的一組色值。將該組色值中的紅、綠和藍(lán)色值分別存儲(chǔ)在基準(zhǔn)緩沖器中象素單元的字段302的R、G和B區(qū)段中。
對(duì)于對(duì)應(yīng)于位于要運(yùn)用紋理的多邊形中的每個(gè)對(duì)象象素的繪制屏幕象素,如基準(zhǔn)緩沖器126中繪制屏幕象素單元300的字段301中的1所示,執(zhí)行部分陰影計(jì)算。部分陰影計(jì)算產(chǎn)生該象素的紋理坐標(biāo)(S,T)、層深D和亮度系數(shù)等值。將紋理坐標(biāo)存儲(chǔ)在基準(zhǔn)緩沖器中象素單元的字段312中,將層深存儲(chǔ)在字段314中,將紅、綠和藍(lán)亮度系數(shù)分別存儲(chǔ)在字段316的區(qū)段IR、IG和IB中。
本發(fā)明提供了兩種顯示方式,即最佳分辨率顯示方式和漸進(jìn)分辨率顯示方式。最佳分辨率顯示方式使圖案數(shù)據(jù)的全部加載時(shí)間最少。漸進(jìn)分辨率顯示方式比最佳分辨率顯示方式更快地顯示圖象。然而,在漸進(jìn)分辨率顯示方式中,首先以低分辨率顯示紋理,接著以遞增的分辨率進(jìn)行顯示,直到以最優(yōu)分辨率顯示每個(gè)紋理。顯示方式可以由用戶(未顯示)選擇或由3D圖形程序定義。
在步驟455,執(zhí)行測(cè)試以確定是否選擇了最佳分辨率顯示方式。如果測(cè)試結(jié)果是YES,則執(zhí)行進(jìn)行到步驟461,開始最佳分辨率顯示方式的處理。如果測(cè)試結(jié)果是NO,則執(zhí)行進(jìn)行到步驟471,開始漸進(jìn)分辨率顯示方式的處理。下面將說(shuō)明最佳分辨率顯示方式的處理,隨后說(shuō)明漸進(jìn)分辨率顯示方式的處理。
在步驟461,為繪制屏幕的每個(gè)象素執(zhí)行下面將參考圖5A和5B詳細(xì)說(shuō)明的例程,其中繪制屏幕的每個(gè)象素在基準(zhǔn)緩沖器126中象素單元300的字段301中具有值1。在這個(gè)字段中的1表明對(duì)應(yīng)于該繪制屏幕象素的對(duì)象象素位于一個(gè)要運(yùn)用紋理的多邊形內(nèi)。該例程為每個(gè)紋理識(shí)別紋理的塔形數(shù)據(jù)結(jié)構(gòu)134的在第二加載操作中必須獲得其圖案數(shù)據(jù)以允許繪制圖象的瓦片。當(dāng)完成步驟461的執(zhí)行時(shí),識(shí)別出每個(gè)紋理的塔形數(shù)據(jù)結(jié)構(gòu)的其圖案數(shù)據(jù)必須被獲得的所有瓦片,并將紋理的瓦片加載列表136中的這些瓦片的入口都設(shè)置成“L”。
在步驟462,通過(guò)為在紋理存儲(chǔ)器130中存在一頁(yè)132的每個(gè)紋理執(zhí)行下面將參考圖6詳細(xì)說(shuō)明的例程來(lái)執(zhí)行第二加載操作。該例程掃描存儲(chǔ)在紋理數(shù)據(jù)存儲(chǔ)器130的紋理頁(yè)132中的瓦片加載列表136,并獲得其瓦片加載列表入口被設(shè)置為“L”的瓦片的圖案數(shù)據(jù)。如上所述,每個(gè)瓦片的圖案數(shù)據(jù)可以通過(guò)加載或通過(guò)從下一個(gè)較高分辨率層、即塔形數(shù)據(jù)結(jié)構(gòu)中的下面一層中的圖案數(shù)據(jù)進(jìn)行合成來(lái)獲得。當(dāng)完成步驟462的執(zhí)行時(shí),繪制圖象所需的全部圖案數(shù)據(jù)存儲(chǔ)在紋理存儲(chǔ)器的相應(yīng)頁(yè)中的塔形數(shù)據(jù)結(jié)構(gòu)中,并將相應(yīng)瓦片加載列表中的這些瓦片的入口都設(shè)置為“E”。
應(yīng)該指出,在完成步驟462之后,瓦片加載列表中的相當(dāng)多的入口可能仍保持設(shè)置為“N”。這種入口表明相應(yīng)瓦片的圖案數(shù)據(jù)還未獲得,因?yàn)椴恍枰@種圖案數(shù)據(jù)來(lái)繪制圖象。這允許步驟462比常規(guī)加載階段更快地執(zhí)行。
在步驟463,通過(guò)為繪制屏幕的每個(gè)在基準(zhǔn)緩沖器126的象素單元300的字段301中有1的象素執(zhí)行下面將參考圖7A詳細(xì)說(shuō)明的例程來(lái)執(zhí)行最終繪制操作。該例程執(zhí)行三線性內(nèi)插來(lái)完成最初在步驟454執(zhí)行的部分陰影操作。該內(nèi)插從在步驟462獲得的圖案數(shù)據(jù)為象素計(jì)算一組紋理色值。三線性內(nèi)插是采用位于塔形數(shù)據(jù)結(jié)構(gòu)的兩層中的圖案數(shù)據(jù)來(lái)執(zhí)行的。這兩層將基準(zhǔn)緩沖器126的象素單元300的字段314中存儲(chǔ)的實(shí)數(shù)層深歸在一起。該例程然后將紋理色值乘以在步驟454存儲(chǔ)在基準(zhǔn)緩沖器的繪制屏幕象素單元的字段316中的相應(yīng)亮度系數(shù),以產(chǎn)生象素的最終色值。將最終色值存儲(chǔ)在象素緩沖器的象素存儲(chǔ)單元中。在最佳實(shí)施例中,象素/景深緩沖器124用作為象素緩沖器?;蛘撸梢允褂靡粋€(gè)與景深緩沖器無(wú)關(guān)的象素緩沖器。
在步驟464,對(duì)于在基準(zhǔn)緩沖器126中象素單元300的字段301中具有0的繪制屏幕的每個(gè)象素,將存儲(chǔ)在基準(zhǔn)緩沖器的象素單元的字段302中的最終色值復(fù)制到象素緩沖器中的象素存儲(chǔ)單元中。
最后,在步驟465,將存儲(chǔ)在象素緩沖器124中的最終色值直接或間接輸出到監(jiān)視器150中。監(jiān)視器響應(yīng)從象素緩沖器接收的最終色值顯示所繪制的圖象。
執(zhí)行然后進(jìn)行到步驟481,執(zhí)行一個(gè)測(cè)試以確定用戶(未顯示)是否已經(jīng)鍵入了一個(gè)輸入。例如,用戶輸入可以鍵入一個(gè)改變視點(diǎn)的輸入。這要求執(zhí)行一個(gè)新的繪制操作。如果測(cè)試結(jié)果是NO,則執(zhí)行返回步驟481。如果測(cè)試結(jié)果是YES,則執(zhí)行進(jìn)行到步驟482,改變被用戶輸入影響的參數(shù)。執(zhí)行然后返回到步驟453,執(zhí)行一個(gè)新的繪制操作。在新繪制操作期間,可能需要獲得在先前未獲得其圖案數(shù)據(jù)的瓦片的圖案數(shù)據(jù),但在剛剛描述的繪制操作中獲得的很多圖案數(shù)據(jù)通常都可以再使用。
下面將參考圖4B說(shuō)明在漸進(jìn)分辨率顯示方式中執(zhí)行的過(guò)程。在步驟471,從服務(wù)器110加載由在步驟451中加載的多邊形數(shù)據(jù)指定的所有紋理的頂部瓦片的圖案數(shù)據(jù)。每個(gè)紋理的頂部瓦片的圖案數(shù)據(jù)存儲(chǔ)在紋理存儲(chǔ)器130的紋理頁(yè)132中的塔形數(shù)據(jù)結(jié)構(gòu)134中的適當(dāng)位置。頂部瓦片的圖案數(shù)據(jù)表示具有最低分辨率的相應(yīng)紋理。然后,該處理執(zhí)行一個(gè)分辨率提高循環(huán),在該循環(huán)中,最初以低分辨率紋理顯示圖象,然后,隨著獲得更高分辨率瓦片的圖案數(shù)據(jù),以漸進(jìn)的更高分辨率紋理顯示圖象。分辨率提高循環(huán)由步驟472-477組成。
在步驟472中,為在基準(zhǔn)緩沖器126的象素單元300的字段301中具有1的繪制屏幕的每個(gè)象素執(zhí)行下面將參考圖7B詳細(xì)說(shuō)明的例程。該例程采用雙線性和三線性內(nèi)插,以便為紋理產(chǎn)生紋理色值。將紋理色值乘以存儲(chǔ)在基準(zhǔn)緩沖器126中的亮度系數(shù),并將所得的繪制屏幕象素的最終色值存儲(chǔ)在象素/景深緩沖器124中。象素/景深緩沖器在這個(gè)操作中用作為象素緩沖器?;蛘?,可以采用一個(gè)與景深緩沖器無(wú)關(guān)的象素緩沖器。
在循環(huán)的較早迭代中,計(jì)算出的大多數(shù)紋理色值是具有小于最佳的分辨率的中間值。然而,較早迭代可以計(jì)算一些具有最佳分辨率的紋理色值。隨著迭代次數(shù)的增加,以最佳分辨率計(jì)算出紋理色值的繪制屏幕象素的數(shù)目也增加。隨著紋理色值的分辨率的增大,在圖象中顯示紋理的分辨率也增大。
下面將要參考圖7B描述的處理還將某些瓦片的瓦片加載列表入口設(shè)置為“L”。這種入口表明,當(dāng)在例程中的后面執(zhí)行步驟477時(shí),必須獲得其圖案數(shù)據(jù)的瓦片。獲得這些圖案數(shù)據(jù)增大了在循環(huán)的下一次迭代中執(zhí)行步驟472時(shí)所產(chǎn)生的紋理色值的分辨率。
在步驟473,對(duì)于在象素的基準(zhǔn)緩沖器單元300的字段301中具有0的繪制屏幕的每個(gè)象素,將存儲(chǔ)在象素的基準(zhǔn)緩沖器單元的字段302中的最終色值復(fù)制到象素緩沖器124中的象素位置。
在步驟474,將象素緩沖器124中存儲(chǔ)的繪制屏幕的象素的最終色值直接或間接輸出到監(jiān)視器150。監(jiān)視器響應(yīng)該最終色值而顯示一個(gè)圖象。執(zhí)行然后通過(guò)步驟475進(jìn)行到步驟476。下面將描述步驟475。
在步驟476,在存儲(chǔ)在紋理存儲(chǔ)器130的頁(yè)132中的瓦片加載列表136上執(zhí)行測(cè)試,以確定在執(zhí)行步驟472時(shí)瓦片加載列表中的任何入口是否被設(shè)置到“L”。如果結(jié)果為NO,表明已經(jīng)獲得以最佳分辨率繪制圖象所需的所有圖案數(shù)據(jù),如上所述,處理進(jìn)行到步驟481。如果結(jié)果為YES,則執(zhí)行進(jìn)行到步驟477。
在步驟477,通過(guò)為每個(gè)在紋理存儲(chǔ)器130中存在一頁(yè)132的紋理執(zhí)行下面將參考圖6詳細(xì)說(shuō)明的例程來(lái)執(zhí)行第二加載操作。該例程掃描存儲(chǔ)在紋理數(shù)據(jù)存儲(chǔ)器130的紋理頁(yè)132中的瓦片加載列表136,并獲得其瓦片加載列表入口被設(shè)置為“L”的瓦片的圖案數(shù)據(jù)。如上所述,可以通過(guò)加載或通過(guò)從下一個(gè)較高分辨率層、即在塔形數(shù)據(jù)結(jié)構(gòu)中下一層的圖案數(shù)據(jù)進(jìn)行合成來(lái)獲得每個(gè)瓦片的圖案數(shù)據(jù)。當(dāng)步驟477的執(zhí)行結(jié)束時(shí),將已經(jīng)獲得其圖案數(shù)據(jù)的瓦片的瓦片加載列表中的入口設(shè)置為“E”。執(zhí)行然后進(jìn)行到步驟472。
每次執(zhí)行步驟477時(shí),獲得具有大于先前獲得的圖案數(shù)據(jù)的分辨率的圖案數(shù)據(jù)。這使得在下一次執(zhí)行步驟472時(shí)產(chǎn)生更精細(xì)晶粒、更高分辨率圖象的最終色值。重復(fù)由步驟472-477組成的循環(huán),直到已經(jīng)獲得產(chǎn)生與由最佳分辨率顯示方式提供的相同的圖象所需的瓦片的圖案數(shù)據(jù)。當(dāng)已經(jīng)獲得提供這樣一個(gè)圖象的瓦片的圖案數(shù)據(jù)時(shí),在步驟476執(zhí)行的測(cè)試中獲得NO結(jié)果。
步驟472到477組成的循環(huán)包括圖案數(shù)據(jù)獲取步驟477,這可能會(huì)花很長(zhǎng)的時(shí)間來(lái)執(zhí)行,特別是在加載較高分辨率圖案數(shù)據(jù)時(shí)。因此,在循環(huán)中包括步驟475。這個(gè)步驟允許用戶中斷分辨率提高循環(huán),以輸入新的參數(shù)。新參數(shù)例如可以是視點(diǎn)的變換。在步驟475,執(zhí)行一個(gè)測(cè)試,以確定是否已經(jīng)接收到用戶輸入。如果結(jié)果是NO,則表明沒有接收到用戶輸入,執(zhí)行進(jìn)行到步驟476,分辨率提高循環(huán)的下一步驟。如果結(jié)果是YES,則分辨率提高循環(huán)停止執(zhí)行,執(zhí)行進(jìn)行到步驟482,在這里接收新的用戶參數(shù)。執(zhí)行然后返回到步驟453,在這里響應(yīng)新的用戶輸入重復(fù)繪制過(guò)程。
圖5A顯示了在步驟461執(zhí)行的例程的細(xì)節(jié),該例程識(shí)別塔形數(shù)據(jù)結(jié)構(gòu)200的那些必須獲得其圖案數(shù)據(jù)以使得圖象能以最佳分辨率顯示方式繪制的瓦片。為繪制屏幕的每個(gè)象素執(zhí)行圖5A所示例程,但以測(cè)試象素的基準(zhǔn)緩沖器單元300的字段301的內(nèi)容開始。如果該字段包含0,則表明在步驟454計(jì)算了象素的最終色值,該例程的剩余步驟則不執(zhí)行。因此,實(shí)際上,該例程只在那些從位于要運(yùn)用紋理的多邊形中的對(duì)象象素導(dǎo)出的象素上完全執(zhí)行。
執(zhí)行開始于步驟500。在步驟502,執(zhí)行一個(gè)測(cè)試,以確定在象素的基準(zhǔn)緩沖器單元300的字段301中是否存儲(chǔ)著1。字段301中的1表明繪制屏幕象素對(duì)應(yīng)于一個(gè)位于要運(yùn)用紋理的多邊形中的對(duì)象象素。當(dāng)測(cè)試結(jié)果為NO時(shí),執(zhí)行進(jìn)行到步驟542,在這里遞增象素地址,從而可以處理下一個(gè)繪制屏幕象素。當(dāng)測(cè)試結(jié)果為YES時(shí),執(zhí)行進(jìn)行到步驟504。
在步驟504,從基準(zhǔn)緩沖器126中的繪制屏幕坐標(biāo)單元300的字段312和314讀取紋理坐標(biāo)(S,T)和景深D的值。所讀取的所有數(shù)都是實(shí)數(shù),可以表示為浮點(diǎn)數(shù)或定點(diǎn)數(shù)。
在步驟506,執(zhí)行一個(gè)測(cè)試,以確定在步驟504讀取的D值是否比紋理的Dmax的值大。Dmax的值從由存儲(chǔ)在單元300的字段310中的地址所表明的紋理存儲(chǔ)器130的頁(yè)132的區(qū)段133讀取。大于Dmax的D值表明圖案數(shù)據(jù)的最大分辨率不足以提供繪制圖象中所需的紋理分辨率。在這種情況下,將D設(shè)置為最大可用分辨率,即Dmax。如果測(cè)試結(jié)果是YES,則執(zhí)行進(jìn)行到步驟508,在這里將D設(shè)置為Dmax,然后進(jìn)行到步驟510。如果測(cè)試結(jié)果是NO,則過(guò)程直接進(jìn)行到步驟510。
在步驟510,將在步驟504讀取的層深D分成其整數(shù)部分DL和其分?jǐn)?shù)部分Dr。另外,計(jì)算比例因子的值SF=Dmax-DL。
在步驟512,用2SF除以層Dmax中的紋理坐標(biāo)(S,T),以獲得層DL中的紋理坐標(biāo)(S,T)L。
在步驟514,分別從紋理存儲(chǔ)器130的紋理頁(yè)132的瓦片間距陣列138和瓦片基數(shù)陣列140讀取層DF的瓦片基數(shù)和瓦片間距的值,并分配給變量WL和BL。紋理存儲(chǔ)器中的紋理頁(yè)由存儲(chǔ)在基準(zhǔn)緩沖器126中的象素單元300的字段310中的地址指示。
在步驟516,將紋理坐標(biāo)(S,T)L分成整數(shù)部分(Si,Ti)L和分?jǐn)?shù)部分(Sf,Tf)L。
在步驟518,分別用TWL和THL除以層DL中的紋理坐標(biāo)的整數(shù)部分(Si,Ti)L,以產(chǎn)生商(Sr,Tr)L。在該步驟中,TWL和THL分別是層DL中的瓦片的象素的寬度和高度。還計(jì)算除法的余數(shù)(Sb,Tb)L,以便用在在步驟524中執(zhí)行的子程序中,并且用于計(jì)算在步驟520中識(shí)別的瓦片的應(yīng)用的局部坐標(biāo)。
在步驟520,從該層的瓦片基數(shù)BL、瓦片間距WL以及在步驟518計(jì)算出的商計(jì)算繪制圖象所需的圖案數(shù)據(jù)所屬于的層DL中的瓦片的瓦片號(hào)ND1。通過(guò)對(duì)瓦片基數(shù)BL、商(Sr)L以及商(Tr)L與瓦片間距WL的乘積進(jìn)行求和來(lái)得到瓦片號(hào)ND1,即,ND1=BL+((Tr)L×WL)+(Sr)L。
在步驟522,將紋理存儲(chǔ)器130的頁(yè)130中的瓦片加載列表136中的在步驟520識(shí)別的瓦片ND1的入口設(shè)置為“L”,以表明必須獲得這個(gè)瓦片的圖案數(shù)據(jù)以繪制圖象。紋理存儲(chǔ)器的頁(yè)由存儲(chǔ)在基準(zhǔn)緩沖器126中的象素單元300的字段310中的地址指示。
當(dāng)紋理坐標(biāo)(S,T)L定義了在步驟520中識(shí)別的瓦片與一個(gè)或多個(gè)相鄰?fù)咂g的邊界上的一個(gè)點(diǎn)時(shí),必須另外將相鄰?fù)咂耐咂虞d列表中的入口設(shè)置為“L”,以表明這些瓦片的圖案數(shù)據(jù)也必須被獲得。在步驟524,采用分別在步驟518和516獲得的余數(shù)(Sb,Tb)L和分?jǐn)?shù)部分(Sf,Tf)L來(lái)執(zhí)行下面將參考圖5B詳細(xì)描述的子程序。該子程序檢查坐標(biāo)(S,T)L是否定義了在步驟520中識(shí)別的瓦片與一個(gè)或多個(gè)相鄰?fù)咂g的邊界上的一個(gè)點(diǎn),并且,如果需要的話,將另外的瓦片的瓦片加載列表入口設(shè)置為“L”,以使得這些瓦片的圖案數(shù)據(jù)也被獲得。在完成該子程序之后,執(zhí)行進(jìn)行到步驟526。
如果存儲(chǔ)在基準(zhǔn)緩沖器126的象素單元300的字段314中的D值是一個(gè)整數(shù),則可以通過(guò)只采用層DL中的圖案數(shù)據(jù)進(jìn)行內(nèi)插來(lái)確定繪制屏幕象素的紋理色值。如同通常的情況,如果D的值具有非零的分?jǐn)?shù)部分,則最好采用三線性內(nèi)插來(lái)產(chǎn)生紋理色值。三線性內(nèi)插另外還需要下一個(gè)更高分辨率層DG的圖案數(shù)據(jù)。層DG的層深比層DL的層深大1,即,DG=DL+1。圖5A所示程序的剩余步驟識(shí)別必須獲得其圖案數(shù)據(jù)以繪制圖象的更高分辨率層DG中的至少一個(gè)瓦片。
在步驟526,執(zhí)行一個(gè)測(cè)試,以確定在步驟510獲得的Df的值是否大于零,即,D的值是否是個(gè)整數(shù)。如果測(cè)試結(jié)果是NO,則執(zhí)行進(jìn)行到步驟542,在這里,如上所述,遞增繪制屏幕象素地址。如果測(cè)試結(jié)果是YES,則執(zhí)行步驟528到540,將緊低于層DL的、線性分辨率兩倍于層DL的層DG中的一個(gè)或多個(gè)瓦片的瓦片加載列表入口設(shè)置為“L”。在下一個(gè)更低層DG中識(shí)別的一個(gè)或多個(gè)瓦片的圖案數(shù)據(jù)將被獲得,用于層間內(nèi)插。
在步驟528,將紋理坐標(biāo)(S,T)L乘以2,以獲得層DG中的紋理坐標(biāo)(S,T)G。
步驟530-540與步驟514-524基本類似,不同之處在于,在步驟530-540中所用的量以及在步驟530-540中計(jì)算出的量是關(guān)于層DG而不是層DL的。在步驟538,將層DG中的識(shí)別出的瓦片ND1的瓦片加載列表136中的入口設(shè)置為“L”,表明必須獲得這個(gè)瓦片的圖案數(shù)據(jù)以繪制圖象。將瓦片加載列表存儲(chǔ)在由存儲(chǔ)在基準(zhǔn)緩沖器126中的象素單元300的字段310中的地址所指示的紋理存儲(chǔ)器130的頁(yè)132中。可以在步驟540中執(zhí)行的子程序中對(duì)層DG中的另外的瓦片進(jìn)行標(biāo)記。在完成該子程序之后,執(zhí)行進(jìn)行到步驟542。
在步驟542,遞增象素地址。在步驟544,執(zhí)行一個(gè)測(cè)試,以確定是否已經(jīng)處理了繪制屏幕中的所有象素。如果結(jié)果是YES,則執(zhí)行進(jìn)行到步驟546,在這里返回如圖4B所示的主程序。如果測(cè)試結(jié)果是NO,則執(zhí)行進(jìn)行到步驟502。
圖5B顯示了在圖5A所示過(guò)程的步驟524執(zhí)行的子程序的細(xì)節(jié)。該子程序確定紋理坐標(biāo)(S,T)L是否定義了在步驟520中識(shí)別的瓦片與一個(gè)或多個(gè)相鄰?fù)咂g的邊界上的一個(gè)點(diǎn),如果是這樣的話,標(biāo)記瓦片加載列表中相鄰?fù)咂娜肟?。在步驟540執(zhí)行類似的子程序,但運(yùn)用到與紋理坐標(biāo)(S,T)G上。
執(zhí)行開始于步驟551。
在步驟553,執(zhí)行測(cè)試,以確定紋理坐標(biāo)(S,T)L是否定義了在步驟520中識(shí)別出的瓦片的垂直邊沿上的一點(diǎn)。這樣的一點(diǎn)在識(shí)別出的瓦片與水平方向上的相鄰?fù)咂倪吔缟?。?zhí)行測(cè)試以確定在步驟518產(chǎn)生的余數(shù)(Sb)L是否等于TWL-1,執(zhí)行測(cè)試以確定在步驟516產(chǎn)生的坐標(biāo)SL的分?jǐn)?shù)部分(Sf)L是否大于零。如果任何一個(gè)測(cè)試結(jié)果是NO,則執(zhí)行進(jìn)行到步驟561。如果兩個(gè)測(cè)試結(jié)果都為YES,則表明由坐標(biāo)(S,T)L定義的點(diǎn)在所識(shí)別瓦片的垂直邊沿上,執(zhí)行進(jìn)行到步驟555。
在步驟555,將瓦片號(hào)為ND1+1的瓦片的瓦片加載列表中的入口設(shè)置為“L”。執(zhí)行然后進(jìn)行到步驟557。
在步驟557,執(zhí)行測(cè)試以確定坐標(biāo)(S,T)L是否定義了在步驟520識(shí)別出的瓦片的角上的一個(gè)點(diǎn)。這樣的一點(diǎn)在識(shí)別出的瓦片與在水平和垂直方向上的相鄰?fù)咂倪吔缟?。?zhí)行一個(gè)測(cè)試以確定在步驟518產(chǎn)生的余數(shù)(Tb)L是否等于THL-1,執(zhí)行一個(gè)測(cè)試以確定在步驟516產(chǎn)生的坐標(biāo)TL的分?jǐn)?shù)部分(Tf)L是否大于零。如果任何一個(gè)測(cè)試結(jié)果是NO,則執(zhí)行進(jìn)行到步驟561。如果兩個(gè)測(cè)試結(jié)果都為YES,則表明由坐標(biāo)(S,T)L定義的點(diǎn)在所識(shí)別瓦片的角上,執(zhí)行進(jìn)行到步驟559。
在步驟559,將瓦片號(hào)為ND1+WL+1的瓦片的瓦片加載列表中的入口設(shè)置為“L”。執(zhí)行然后進(jìn)行到步驟561。
在步驟561,執(zhí)行測(cè)試以確定紋理坐標(biāo)(S,T)L是否定義了在步驟520中識(shí)別出的瓦片的水平邊沿上的一點(diǎn)。這樣的一點(diǎn)在識(shí)別出的瓦片與垂直方向上的相鄰?fù)咂倪吔缟?。所?zhí)行的測(cè)試與在步驟557中執(zhí)行的相同,即,測(cè)試確定在步驟518產(chǎn)生的余數(shù)(Tb)L是否等于THL-1,執(zhí)行測(cè)試以確定在步驟516產(chǎn)生的坐標(biāo)TL的分?jǐn)?shù)部分(Tf)L是否大于零。如果任何一個(gè)測(cè)試結(jié)果是NO,則執(zhí)行進(jìn)行到步驟565,從這里返回主程序。如果兩個(gè)測(cè)試結(jié)果都為YES,則表明由坐標(biāo)(S,T)L定義的點(diǎn)在所識(shí)別瓦片的水平邊沿上,執(zhí)行進(jìn)行到步驟563。
在步驟563,將瓦片號(hào)為ND1+WL的瓦片的瓦片加載列表中的入口設(shè)置為“L”。執(zhí)行然后進(jìn)行到步驟565,從這里返回主程序。
圖6是用于執(zhí)行圖4B所示程序的步驟462的程序示例的詳細(xì)流程圖。該程序測(cè)試存儲(chǔ)在紋理數(shù)據(jù)存儲(chǔ)器130的每頁(yè)132中的瓦片加載列表136,獲取其瓦片加載列表入口被設(shè)置為“L”的瓦片的圖案數(shù)據(jù),并將還未獲得其圖案數(shù)據(jù)的瓦片的瓦片加載列表入口設(shè)置為“E”。通過(guò)合成或加載來(lái)獲取圖案數(shù)據(jù)。對(duì)紋理數(shù)據(jù)存儲(chǔ)在紋理數(shù)據(jù)存儲(chǔ)器130的頁(yè)132中的每個(gè)紋理執(zhí)行該程序。在已經(jīng)對(duì)基準(zhǔn)緩沖器126中的每個(gè)單元執(zhí)行了圖4B所示程序的步驟461之后,將必須獲得其圖案數(shù)據(jù)的每個(gè)瓦片的瓦片加載列表中的入口設(shè)置為“L”。
執(zhí)行從步驟600開始。測(cè)試對(duì)應(yīng)于圖2所示塔形數(shù)據(jù)結(jié)構(gòu)的各層的瓦片加載列表的各部分,從對(duì)應(yīng)于具有最高紋理分辨率的底層的部分開始。在下面的解釋中,將對(duì)應(yīng)于被測(cè)試的瓦片加載列表部分的層稱作為當(dāng)前層。將層深比當(dāng)前層小1的層稱作為上一層。將層深比當(dāng)前層大1的層稱作為下一層。
在步驟602,將層深索引d的值設(shè)置為Dmax,即底(最高分辨率)層的層深。
在步驟604,將瓦片索引t設(shè)置為Bd,即當(dāng)前層的瓦片基數(shù)值。
在步驟606,執(zhí)行一個(gè)測(cè)試,以確定是否將具有瓦片索引t的瓦片的瓦片加載列表(在圖中簡(jiǎn)寫為TLL)中的入口設(shè)置為“L”。如果測(cè)試結(jié)果為NO,表明瓦片的圖案數(shù)據(jù)不需要必須獲得,執(zhí)行進(jìn)行到步驟618。如果測(cè)試結(jié)果是YES,執(zhí)行進(jìn)行到步驟608。
在步驟608,執(zhí)行一個(gè)測(cè)試,以確定表明當(dāng)前層的層深索引d是否小于圖2所示塔形數(shù)據(jù)結(jié)構(gòu)200的底層202的層深Dmax。存儲(chǔ)在底層中的圖案數(shù)據(jù)不能被合成,因?yàn)闆]有更高分辨率的圖案數(shù)據(jù)可用來(lái)合成底層的圖案數(shù)據(jù)。因此,如果測(cè)試結(jié)果是NO,則表明當(dāng)前層是底層,執(zhí)行進(jìn)行到步驟610,在這里將具有瓦片索引t的瓦片的圖案數(shù)據(jù)進(jìn)行加載,并存儲(chǔ)在由紋理存儲(chǔ)器130的紋理頁(yè)132中的塔形數(shù)據(jù)結(jié)構(gòu)134中的索引所表明的位置。執(zhí)行然后進(jìn)行到步驟616,這將在下面進(jìn)行說(shuō)明。
如果在步驟608的測(cè)試結(jié)果是YES,則執(zhí)行進(jìn)行到步驟612。測(cè)試結(jié)果YES表明當(dāng)前層高于底層,因此存在著可以從位于下一層、即層深為d+1的更高分辨率層的源瓦片的圖案數(shù)據(jù)合成當(dāng)前層中瓦片的圖案數(shù)據(jù)的可能。合成圖案數(shù)據(jù)通常比加載圖案數(shù)據(jù)更好,因?yàn)楹铣蓤D案數(shù)據(jù)會(huì)比加載圖案數(shù)據(jù)更快。
在步驟612,執(zhí)行一個(gè)測(cè)試,以確定具有瓦片索引t的瓦片的源瓦片的瓦片加載列表中的入口是否都設(shè)置為“E”。源瓦片是位于下一層的、其圖案數(shù)據(jù)可用于合成當(dāng)前層中的瓦片的圖案數(shù)據(jù)的瓦片。這種合成可以只在如同所有源瓦片的瓦片加載列表入口中的“E”所指示的、所有所需源瓦片的圖案數(shù)據(jù)都在塔形數(shù)據(jù)結(jié)構(gòu)中存在的情況下執(zhí)行。需要下一層中的四個(gè)源瓦片的圖案數(shù)據(jù)來(lái)合成當(dāng)前層中的大多數(shù)瓦片的圖案數(shù)據(jù)。然而,只需要兩個(gè)源瓦片的圖案數(shù)據(jù)來(lái)合成位于當(dāng)前層的右邊和底邊界的瓦片的圖案數(shù)據(jù)。此外,只有一個(gè)源瓦片的圖案數(shù)據(jù)用于位于當(dāng)前層的右下角的瓦片的圖案數(shù)據(jù)。
如果步驟612的測(cè)試結(jié)果是NO,則表明沒有足夠的圖案數(shù)據(jù)存在于下一層中來(lái)合成當(dāng)前層中具有瓦片索引t的瓦片,執(zhí)行進(jìn)行到步驟610。在步驟610,如上所述加載具有瓦片索引t的瓦片的圖案數(shù)據(jù)。如果測(cè)試結(jié)果是YES,則執(zhí)行進(jìn)行到步驟614。
在步驟614,從下一層中的源瓦片的圖案數(shù)據(jù)合成當(dāng)前層中具有瓦片索引t的瓦片的圖案數(shù)據(jù)。將合成的圖案數(shù)據(jù)存儲(chǔ)在由紋理存儲(chǔ)器130的紋理頁(yè)132中的塔形數(shù)據(jù)結(jié)構(gòu)134中的瓦片索引所指示的位置中。執(zhí)行然后進(jìn)行到步驟616。
在步驟616,將具有瓦片索引t的瓦片的瓦片加載列表的入口設(shè)置為“E”,“E”表明該瓦片的圖案數(shù)據(jù)現(xiàn)在存在于紋理的塔形數(shù)據(jù)結(jié)構(gòu)中,這是通過(guò)在步驟614合成或在步驟610加載所獲得的結(jié)果。
在步驟618,遞增瓦片索引。
在步驟620,執(zhí)行一個(gè)測(cè)試,以確定是否已經(jīng)測(cè)試了當(dāng)前層中所有瓦片的瓦片加載列表入口。這是通過(guò)測(cè)試瓦片索引的值是否大于Bd+1、即下一層的瓦片基數(shù)的值來(lái)實(shí)現(xiàn)的。當(dāng)當(dāng)前層是底(最高分辨率)層時(shí),存儲(chǔ)在瓦片基數(shù)陣列中的瓦片的總數(shù)值被用作為低于底層的(非現(xiàn)存)層的瓦片基數(shù)。如果測(cè)試結(jié)果是NO,執(zhí)行返回步驟606,從而可以測(cè)試當(dāng)前層中另一個(gè)瓦片的瓦片加載列表入口。如果測(cè)試結(jié)果是YES,則表明已經(jīng)獲得當(dāng)前層的所有可能的圖案數(shù)據(jù),執(zhí)行進(jìn)行到步驟622。
在步驟622,將層深索引d遞減1。
在步驟624,執(zhí)行一個(gè)測(cè)試,以確定當(dāng)前層的層深d是否小于零,即頂(最高分辨率)層的層深。如果測(cè)試結(jié)果是NO,則執(zhí)行返回步驟604,以便可以獲得上一層的圖案數(shù)據(jù)。如果測(cè)試結(jié)果是YES,則表明已經(jīng)獲得了其瓦片加載列表入口被設(shè)置為“L”的所有瓦片的圖案數(shù)據(jù),執(zhí)行進(jìn)行到步驟626,從這里返回圖4B所示的程序。
圖7A顯示了在圖4B所示主程序的步驟463中執(zhí)行的產(chǎn)生以最佳分辨率顯示方式繪制屏幕象素的最終色值的程序的細(xì)節(jié)。對(duì)繪制屏幕的在象素的基準(zhǔn)緩沖器單元300的字段301中具有1的每個(gè)象素執(zhí)行這個(gè)程序。這個(gè)字段中的1表明繪制屏幕象素對(duì)應(yīng)于位于要運(yùn)用紋理的多邊形中的一個(gè)對(duì)象象素。通過(guò)將在步驟454計(jì)算出的亮度系數(shù)乘以通過(guò)從在步驟462獲得的圖案數(shù)據(jù)進(jìn)行三線性內(nèi)插而獲得的紋理色值來(lái)獲得每個(gè)繪制屏幕象素的最終色值。執(zhí)行從步驟700開始。
在步驟702,程序訪問(wèn)基準(zhǔn)緩沖器126中的象素單元300,并讀取紋理坐標(biāo)S、T和層深D。這些參數(shù)都是實(shí)數(shù)。
在步驟704,確定塔形數(shù)據(jù)結(jié)構(gòu)的用于執(zhí)行層間內(nèi)插以獲得層深為在步驟702讀取的值D的紋理色值的兩層的層深。如上所述,這兩層中夾有層深D。將層深D分成整數(shù)部分DL和分?jǐn)?shù)部分Df。另外,將DL遞增1以獲得DG(=DL+1)。兩層中較高分辨率的是層深為DG的那層。兩層中較低分辨率的是層深為DL的那層。
在步驟706,執(zhí)行一個(gè)測(cè)試,以確定DG是否大于最大層深Dmax。如果測(cè)試結(jié)果是NO,則執(zhí)行進(jìn)行到步驟710。如果測(cè)試結(jié)果是YES,則執(zhí)行進(jìn)行到步驟708,在這里將DL和DG都設(shè)置為Dmax,將分?jǐn)?shù)部分Df設(shè)置為零。執(zhí)行然后進(jìn)行到步驟710。
在步驟710,將層深為Dmax的底(最高分辨率)層中的紋理坐標(biāo)(S,T)變換成層DL的紋理坐標(biāo)(S,T)L。可以采用上述參考圖5A的步驟510和512描述的過(guò)程。識(shí)別出與由紋理坐標(biāo)(S,T)L定義的點(diǎn)最近的層DL中的象素,并計(jì)算它們距離點(diǎn)(S,T)L的距離。然后采用識(shí)別出的、被根據(jù)它們距離點(diǎn)(S,T)L的距離逆加權(quán)的紋理象素的紋理色值執(zhí)行第一層內(nèi)內(nèi)插操作。第一層內(nèi)內(nèi)插操作計(jì)算位于紋理坐標(biāo)(S,T)L的紋理象素的紋理色值R1、G1、B1。
在步驟712,執(zhí)行一個(gè)測(cè)試,以確定分?jǐn)?shù)部分Df是否大于零。如果測(cè)試結(jié)果是N0,則表明不需要層間內(nèi)插,執(zhí)行進(jìn)行到步驟714,在這里將紋理色值R0、G0、B0分別設(shè)置為在步驟710計(jì)算出的紋理色值R1、G1、B1的值。執(zhí)行然后進(jìn)行到步驟720,這將在下面進(jìn)行描述。如果測(cè)試結(jié)果是YES,則表明需要層間內(nèi)插,執(zhí)行進(jìn)行到步驟716。
在步驟716,將紋理坐標(biāo)(S,T)變換成層DG的紋理坐標(biāo)(S,T)G。識(shí)別出與由紋理坐標(biāo)(S,T)G定義的點(diǎn)最近的層DG中的象素,并計(jì)算它們距離點(diǎn)(S,T)G的距離。然后采用識(shí)別出的、被根據(jù)它們距離點(diǎn)(S,T)G的距離逆加權(quán)的紋理象素的紋理色值執(zhí)行第二層內(nèi)內(nèi)插操作。第二層內(nèi)內(nèi)插操作計(jì)算位于紋理坐標(biāo)(S,T)G的紋理象素的紋理色值R2、G2、B2。
在步驟718,執(zhí)行一個(gè)層間內(nèi)插操作,以產(chǎn)生位于層深為D的層中的坐標(biāo)(S,T)D處的紋理坐標(biāo)的紋理色值。該內(nèi)插采用層DL的紋理色值R1、G1、B1、層DG的紋理色值R2、G2、B2以及層深D的分?jǐn)?shù)部分Df作為加權(quán)因子。層間內(nèi)插操作產(chǎn)生紋理色值R0、G0、B0。
在步驟720,從基準(zhǔn)緩沖器126中的象素單元300的字段316讀取繪制屏幕象素的亮度系數(shù),并乘以在步驟714或在步驟718產(chǎn)生的紋理色值R0、G0、B0,采用哪一步驟產(chǎn)生的紋理色值取決于層間內(nèi)插是否必要。將所得的最終色值存儲(chǔ)在象素/景深緩沖器124中的繪制屏幕象素位置。
執(zhí)行進(jìn)行到步驟722,從這里返回主程序。
圖7B顯示了在圖4B所示主程序的步驟472中執(zhí)行的產(chǎn)生以漸進(jìn)分辨率顯示方式繪制屏幕象素的最終色值的程序的細(xì)節(jié)。對(duì)繪制屏幕的在基準(zhǔn)緩沖器126的象素單元300的字段301中具有1的每個(gè)象素執(zhí)行這個(gè)程序。這個(gè)字段中的1表明該象素是從位于要運(yùn)用紋理的多邊形中的一個(gè)對(duì)象象素導(dǎo)出的。通過(guò)將在步驟454計(jì)算出的亮度系數(shù)乘以紋理色值來(lái)獲得最終色值。紋理色值是通過(guò)從當(dāng)前獲得的瓦片的圖案數(shù)據(jù)、即在第一次執(zhí)行由步驟472-477組成的分辨率提高循環(huán)時(shí)在步驟471獲得的圖案數(shù)據(jù)、以及在隨后執(zhí)行的分辨率提高循環(huán)中在步驟471獲得的圖案數(shù)據(jù)和在步驟477獲得的圖案數(shù)據(jù)進(jìn)行內(nèi)插而獲得的。如果由當(dāng)前獲得的瓦片的圖案數(shù)據(jù)提供的分辨率對(duì)于主程序的步驟454中計(jì)算出的層深D來(lái)說(shuō)不夠,則分辨率提高循環(huán)將需要獲取其圖案數(shù)據(jù)以提供所需分辨率的瓦片的瓦片加載列表入口設(shè)置為“L”,以表明在下一次執(zhí)行步驟477時(shí)需要獲取該圖案數(shù)據(jù)。執(zhí)行從步驟750開始。
步驟752、754、756和758與上面結(jié)合圖7A描述的步驟702、704、706和708相同,這里不再說(shuō)明。
在步驟760-766,測(cè)試紋理的瓦片加載列表中的入口,以便定位最高分辨率的當(dāng)前獲得的瓦片或多個(gè)瓦片,所述瓦片可用于內(nèi)插位于紋理坐標(biāo)(S,T)的紋理象素的紋理色值。在一層中用于內(nèi)插位于紋理坐標(biāo)(S,T)的紋理象素的紋理色值所需的瓦片數(shù)可以是1、2或4,如上所述,這取決于紋理坐標(biāo)是否定義了全部位于一個(gè)瓦片內(nèi)、在兩個(gè)瓦片之間的邊界上或在四個(gè)瓦片之間的角上的一點(diǎn)。瓦片加載列表測(cè)試從對(duì)應(yīng)于塔形數(shù)據(jù)結(jié)構(gòu)的層DG的瓦片加載列表的部分開始。如果層DG的瓦片加載列表入口表明內(nèi)插在紋理坐標(biāo)(S,T)的紋理象素的紋理色值所需的一個(gè)或多個(gè)瓦片的圖案數(shù)據(jù)存在于該層中,則從這些瓦片的圖案數(shù)據(jù)內(nèi)插出紋理色值。另外,測(cè)試上一(較低分辨率)層DG-1的瓦片加載列表入口。測(cè)試漸進(jìn)更高層、即更低分辨率層的瓦片加載列表入口,直到找到包括所需圖案數(shù)據(jù)的層。測(cè)試過(guò)程總是以有效結(jié)果結(jié)束,因?yàn)轫敳客咂膱D案數(shù)據(jù)在這個(gè)程序執(zhí)行之前在主程序的步驟471中加載。
在步驟760,將層深索引d設(shè)置為DG。在步驟762,執(zhí)行與上述參考圖5A描述的類似的程序,以識(shí)別當(dāng)前層中對(duì)應(yīng)于紋理坐標(biāo)(S,T)的瓦片或多個(gè)瓦片。在步驟764,執(zhí)行一個(gè)測(cè)試,以確定在步驟762識(shí)別的所有瓦片的瓦片加載列表入口是否被設(shè)置為“E”,表明已經(jīng)獲得瓦片的圖案數(shù)據(jù),并存儲(chǔ)在紋理的塔形數(shù)據(jù)結(jié)構(gòu)中。
如果步驟764的測(cè)試結(jié)果是NO,表明所需的圖案數(shù)據(jù)在當(dāng)前層中不存在,執(zhí)行進(jìn)行到步驟766,在這里將層索引遞減1。執(zhí)行然后返回步驟762,測(cè)試上一(更低分辨率)層的瓦片加載列表部分。如果測(cè)試結(jié)果是YES,表明當(dāng)前層包括內(nèi)插位于紋理坐標(biāo)(S,T)的紋理象素的紋理色值所必須的圖案數(shù)據(jù),執(zhí)行進(jìn)行到步驟768。
在步驟768,將變量D1設(shè)置為層索引d的當(dāng)前值。變量D1的值表明瓦片加載列表測(cè)試結(jié)束的那一層的層深。
在步驟770,采用在步驟762識(shí)別的層D1的一個(gè)或多個(gè)瓦片的圖案數(shù)據(jù)來(lái)執(zhí)行層內(nèi)內(nèi)插操作。內(nèi)插操作可以用上面參考圖7A的步驟710所述的方法來(lái)執(zhí)行。內(nèi)插操作產(chǎn)生位于紋理坐標(biāo)(S,T)的紋理象素的紋理色值R1、G1和B1。
如果D1小于DG,這意味著對(duì)于在主程序的步驟454計(jì)算出的層深D產(chǎn)生了帶有不足的分辨率的紋理色值。需要獲取另外的圖案數(shù)據(jù)來(lái)提供所需的分辨率。因此,在步驟772,執(zhí)行一個(gè)測(cè)試以確定D1是否等于DG。
如果測(cè)試結(jié)果是NO,執(zhí)行進(jìn)行到步驟774,在這里將紋理色值R0、G0和B0分別設(shè)置為在步驟770計(jì)算出的紋理色值R1、G1和B1的值。執(zhí)行然后進(jìn)行到步驟776,在這里將內(nèi)插位于紋理坐標(biāo)(S,T)的紋理象素的紋理色值所需的層深為D1+1的層中的一個(gè)或多個(gè)瓦片的瓦片加載列表入口設(shè)置為“L”。這個(gè)設(shè)置表明在下次執(zhí)行上面參考圖4B所述的主程序的步驟477時(shí)必須獲得這些瓦片的圖案數(shù)據(jù)。
執(zhí)行然后進(jìn)行到步驟778,這將在下面進(jìn)行說(shuō)明。
如果在步驟778獲得的測(cè)試結(jié)果是YES,則執(zhí)行進(jìn)行到步驟780。YES結(jié)果表明D1等于DG,以所需分辨率內(nèi)插位于紋理坐標(biāo)(S,T)的紋理象素的紋理色值所需的一個(gè)或多個(gè)瓦片的圖案數(shù)據(jù)存在于塔形數(shù)據(jù)結(jié)構(gòu)中。
在步驟780,采用層DL=DG-1的一個(gè)或多個(gè)瓦片的圖案數(shù)據(jù)執(zhí)行層內(nèi)內(nèi)插操作。內(nèi)插操作可以采用上面參考圖7A的步驟710所述的方法來(lái)執(zhí)行。內(nèi)插操作產(chǎn)生位于層DL中的紋理坐標(biāo)(S,T)L的紋理象素的紋理色值R2、G2和B2。
在步驟782,在步驟770產(chǎn)生的層DG的紋理色值R1、G1、B1和在步驟780產(chǎn)生的層DL的紋理色值R2、G2、B2之間執(zhí)行層D中紋理坐標(biāo)(S,T)處的紋理象素的層間內(nèi)插。該內(nèi)插采用層深D的分?jǐn)?shù)部分Df作為加權(quán)因子。層間內(nèi)插產(chǎn)生紋理色值R0、G0、B0。
在步驟778,從基準(zhǔn)緩沖器126中的象素單元300的字段316讀取繪制屏幕象素的亮度系數(shù),并乘以在步驟770或在步驟782產(chǎn)生的紋理色值R0、G0、B0。將所得的繪制屏幕象素的最終色值存儲(chǔ)在象素/景深緩沖器124中的繪制屏幕象素位置。
執(zhí)行然后進(jìn)行到步驟784,從這里返回主程序。
上面已經(jīng)參考例子描述了本發(fā)明,其中,將瓦片以常規(guī)掃描順序、即從左到右從上到下地排列在塔形數(shù)據(jù)結(jié)構(gòu)的各層中。然而,各層中瓦片的排列并不是關(guān)鍵的,可以采用不同的排列。如果采用不同的排列,則對(duì)位于層的左上、右邊和底沿以及右下角的瓦片的基準(zhǔn)也應(yīng)相應(yīng)地改變。
雖然這個(gè)說(shuō)明書詳細(xì)描述了本發(fā)明的例示實(shí)施例,但應(yīng)該理解,本發(fā)明并不限于所述的精確實(shí)施例,而是可以在由附帶的權(quán)利要求書限定的范圍內(nèi)進(jìn)行各種修改。
權(quán)利要求
1.一種響應(yīng)于三維圖形數(shù)據(jù)繪制圖象的繪制裝置,所述裝置包括一個(gè)輸入路徑,繪制裝置通過(guò)所述輸入路徑可以接收三維圖形數(shù)據(jù),三維圖形數(shù)據(jù)包括多邊形數(shù)據(jù),另外還包括定義紋理的紋理數(shù)據(jù),紋理數(shù)據(jù)包括紋理尺寸數(shù)據(jù)和多組圖案數(shù)據(jù),每組中的圖案數(shù)據(jù)表示具有不同分辨率的紋理,圖案數(shù)據(jù)構(gòu)成紋理數(shù)據(jù)的主要部分;包括第一存儲(chǔ)器單元的象素/景深緩沖器,第一存儲(chǔ)器單元對(duì)應(yīng)于一個(gè)繪制屏幕的象素;包括第二存儲(chǔ)器單元的基準(zhǔn)緩沖器,第二存儲(chǔ)器單元對(duì)應(yīng)于繪制屏幕的象素;以及繪制機(jī),執(zhí)行初始光柵化操作,僅僅采用多邊形和紋理尺寸數(shù)據(jù)來(lái)為繪制屏幕的每個(gè)象素產(chǎn)生紋理標(biāo)識(shí)符、表明紋理分辨率的層深值以及紋理坐標(biāo),并存儲(chǔ)在基準(zhǔn)緩沖器中;響應(yīng)每個(gè)繪制屏幕象素的存儲(chǔ)在基準(zhǔn)緩沖器中的紋理標(biāo)識(shí)符、層深和紋理坐標(biāo)來(lái)識(shí)別繪制圖象所需的一些圖案數(shù)據(jù);通過(guò)路徑來(lái)獲得被識(shí)別為繪制圖象所需的那些圖案數(shù)據(jù);以及采用通過(guò)路徑獲得的圖案數(shù)據(jù)來(lái)產(chǎn)生表示圖象的圖象數(shù)據(jù),所述路徑具有明顯小于繪制機(jī)與緩沖器之間的數(shù)據(jù)傳輸率的數(shù)據(jù)傳輸率。
2.如權(quán)利要求1所述的繪制裝置,其中層深值是具有整數(shù)部分和分?jǐn)?shù)部分的實(shí)數(shù);當(dāng)層深值的分?jǐn)?shù)部分是零時(shí),繪制機(jī)在由層深值的整數(shù)部分所指示的一組圖案數(shù)據(jù)中的圖案數(shù)據(jù)中執(zhí)行第一層內(nèi)內(nèi)插,以產(chǎn)生可以導(dǎo)出圖象數(shù)據(jù)的紋理色值;以及當(dāng)層深值的分?jǐn)?shù)部分不為零時(shí),繪制機(jī)執(zhí)行第一層內(nèi)內(nèi)插,在具有比所述組高一級(jí)的分辨率的另一組中的圖案數(shù)據(jù)中執(zhí)行第二層內(nèi)內(nèi)插,并在由第一和第二層內(nèi)內(nèi)插產(chǎn)生的結(jié)果之間執(zhí)行層間內(nèi)插,以產(chǎn)生可以導(dǎo)出圖象數(shù)據(jù)的紋理色值。
3.如權(quán)利要求1或2所述的繪制裝置,其中由繪制機(jī)執(zhí)行的初始光柵化操作另外還為繪制屏幕的每個(gè)象素產(chǎn)生亮度系數(shù);以及將亮度系數(shù)另外存儲(chǔ)在基準(zhǔn)緩沖器的第二存儲(chǔ)器單元中的一個(gè),第二存儲(chǔ)器單元中的一個(gè)對(duì)應(yīng)于繪制屏幕的一個(gè)象素。
4.如權(quán)利要求1、2或3所述的繪制裝置,其中圖案數(shù)據(jù)屬于在矩形瓦片中排列的紋理象素;所述裝置另外還包括紋理的瓦片加載列表,瓦片加載列表包括每個(gè)瓦片的入口;以及當(dāng)繪制機(jī)識(shí)別出繪制屏幕所需的一些圖案數(shù)據(jù)時(shí),繪制機(jī)從基準(zhǔn)緩沖器讀取紋理坐標(biāo),以識(shí)別繪制圖象所需的圖案數(shù)據(jù)所位于的瓦片中的一個(gè),并將一個(gè)瓦片的瓦片加載列表中的入口設(shè)置為一個(gè)表明需要所述一個(gè)瓦片的圖案數(shù)據(jù)來(lái)繪制圖象的加載狀態(tài)。
5.如權(quán)利要求4所述的繪制裝置,其中,當(dāng)繪制機(jī)獲得繪制圖象所需的圖案數(shù)據(jù)時(shí),繪制機(jī)測(cè)試該紋理的瓦片加載列表,以識(shí)別被設(shè)置為加載狀態(tài)的入口,獲取識(shí)別出其瓦片加載列表中的入口被設(shè)置為加載狀態(tài)的每個(gè)瓦片的圖案數(shù)據(jù),以及,將已經(jīng)獲得其圖案數(shù)據(jù)的每個(gè)瓦片的瓦片加載列表中的入口從加載狀態(tài)改變成存在狀態(tài),存在表明已經(jīng)獲得所述一個(gè)瓦片的圖案數(shù)據(jù)。
6.如權(quán)利要求1-5中的任何一個(gè)所述的繪制裝置,另外還包括紋理存儲(chǔ)器,圖案數(shù)據(jù)以塔形數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在其中,塔形數(shù)據(jù)結(jié)構(gòu)包括多層,在每層中存儲(chǔ)著一組相應(yīng)的表示具有不同分辨率的紋理的圖案數(shù)據(jù),其中一組圖案數(shù)據(jù)表示具有最高分辨率的紋理。
7.如權(quán)利要求6所述的繪制裝置,其中圖案數(shù)據(jù)屬于在矩形瓦片中排列的紋理象素;繪制裝置另外還包括紋理的瓦片加載列表,瓦片加載列表包括每個(gè)瓦片的入口,所述入口表明何時(shí)獲取一個(gè)瓦片的圖案數(shù)據(jù);以及當(dāng)繪制機(jī)獲得位于塔形數(shù)據(jù)結(jié)構(gòu)的一層的一個(gè)瓦片的圖案數(shù)據(jù)時(shí),繪制機(jī)檢查瓦片加載列表以確定是否已經(jīng)獲得位于在所述一層的下一層的源瓦片的圖案數(shù)據(jù),其中源瓦片是可以從其合成所述一個(gè)瓦片的圖案數(shù)據(jù)的多個(gè)瓦片,以及,從源瓦片的圖案數(shù)據(jù)合成所述一個(gè)瓦片的圖案數(shù)據(jù)。
8.如權(quán)利要求6所述的繪制裝置,其中圖案數(shù)據(jù)屬于在矩形瓦片中排列的紋理象素;繪制機(jī)通過(guò)由路徑加載構(gòu)成塔形數(shù)據(jù)結(jié)構(gòu)的頂層的瓦片中的一個(gè)的圖案數(shù)據(jù)來(lái)獲取繪制圖象所需的圖案數(shù)據(jù)的初始部分,并存儲(chǔ)塔形數(shù)據(jù)結(jié)構(gòu)的一個(gè)瓦片;以及繪制機(jī)從塔形數(shù)據(jù)結(jié)構(gòu)中現(xiàn)有的圖案數(shù)據(jù)產(chǎn)生圖象數(shù)據(jù),然后,識(shí)別塔形數(shù)據(jù)結(jié)構(gòu)的需要其圖案數(shù)據(jù)以便以更高分辨率繪制圖象的多個(gè)瓦片,獲取所識(shí)別瓦片的圖案數(shù)據(jù),并以更高分辨率重新產(chǎn)生圖象數(shù)據(jù)。
9.如權(quán)利要求8所述的繪制裝置,其中,繪制機(jī)重復(fù)地執(zhí)行一個(gè)程序,在所述程序中,識(shí)別需要其圖案數(shù)據(jù)以便以更高分辨率繪制圖象的多個(gè)瓦片,獲取所識(shí)別瓦片的圖案數(shù)據(jù),并且以更高分辨率重新產(chǎn)生圖象數(shù)據(jù),將這個(gè)程序一直重復(fù)到全部產(chǎn)生了具有最佳分辨率的圖象數(shù)據(jù),圖象數(shù)據(jù)的最佳分辨率對(duì)應(yīng)于小于最高分辨率的繪制屏幕象素的一個(gè)子集。
10.如權(quán)利要求1-5中的任何一個(gè)所述的繪制裝置,其中,繪制機(jī)通過(guò)(a)通過(guò)路徑加載圖案數(shù)據(jù),以及(b)合成圖案數(shù)據(jù)這二者中的一個(gè)來(lái)獲取繪制圖象所需的圖案數(shù)據(jù)。
11.一種響應(yīng)于三維圖形數(shù)據(jù)繪制圖象的方法,圖象由對(duì)應(yīng)于繪制屏幕的象素的圖象數(shù)據(jù)表示,三維圖形數(shù)據(jù)包括多邊形數(shù)據(jù),另外還包括定義紋理的紋理數(shù)據(jù),紋理數(shù)據(jù)包括紋理尺寸數(shù)據(jù)和多組圖案數(shù)據(jù),每組中的圖案數(shù)據(jù)表示具有不同分辨率的紋理,圖案數(shù)據(jù)構(gòu)成紋理數(shù)據(jù)的的主要部分,所述方法包括接收多邊形和紋理尺寸數(shù)據(jù);為繪制屏幕的每個(gè)象素執(zhí)行初始光柵化操作,初始光柵化操作采用多邊形和紋理尺寸數(shù)據(jù)來(lái)執(zhí)行,初始光柵化操作產(chǎn)生并存儲(chǔ)紋理標(biāo)識(shí)符、表明紋理分辨率的層深值以及紋理坐標(biāo);響應(yīng)為每個(gè)繪制屏幕象素存儲(chǔ)的紋理標(biāo)識(shí)符、層深和紋理坐標(biāo)執(zhí)行圖案數(shù)據(jù)識(shí)別操作,圖案數(shù)據(jù)識(shí)別操作識(shí)別繪制圖象所需的一些圖案數(shù)據(jù);執(zhí)行圖案數(shù)據(jù)獲取操作,在這個(gè)操作中,獲取由圖案數(shù)據(jù)識(shí)別操作識(shí)別為繪制圖象所需的那些圖案數(shù)據(jù);以及執(zhí)行最終光柵化操作,在這個(gè)操作中,采用由圖案數(shù)據(jù)獲取操作獲取的圖案數(shù)據(jù)產(chǎn)生表示圖象的圖象數(shù)據(jù)。
12.如權(quán)利要求11所述的圖象繪制方法,其中執(zhí)行初始光柵化操作產(chǎn)生一個(gè)層深值,所述層深值是具有整數(shù)部分和分?jǐn)?shù)部分的實(shí)數(shù);以及執(zhí)行最終光柵化操作包括當(dāng)層深值的分?jǐn)?shù)部分是零時(shí),在由層深值的整數(shù)部分所指示的一組圖案數(shù)據(jù)中的圖案數(shù)據(jù)中執(zhí)行第一層內(nèi)內(nèi)插,以產(chǎn)生紋理色值,并從紋理色值導(dǎo)出圖象數(shù)據(jù),以及當(dāng)層深值的分?jǐn)?shù)部分不為零時(shí),執(zhí)行第一層內(nèi)內(nèi)插,在具有比所述組高一級(jí)的分辨率的另一組中的圖案數(shù)據(jù)中執(zhí)行第二層內(nèi)內(nèi)插,在由第一和第二層內(nèi)內(nèi)插操作產(chǎn)生的結(jié)果之間執(zhí)行層間內(nèi)插,以產(chǎn)生紋理色值,并從紋理色值導(dǎo)出圖象數(shù)據(jù)。
13.如權(quán)利要求11或12所述的圖象繪制方法,其中初始光柵化操作另外還為繪制屏幕的一個(gè)象素產(chǎn)生亮度系數(shù);以及將亮度系數(shù)與繪制屏幕的一個(gè)象素的紋理標(biāo)識(shí)符、層深值和紋理坐標(biāo)一起存儲(chǔ)。
14.如權(quán)利要求11、12或13所述的圖象繪制方法,其中圖案數(shù)據(jù)屬于在矩形瓦片中排列的紋理象素;所述方法另外還包括提供紋理的瓦片加載列表,瓦片加載列表包括每個(gè)瓦片的入口;以及圖案數(shù)據(jù)識(shí)別操作包括讀取紋理坐標(biāo),以識(shí)別繪制圖象所需的圖案數(shù)據(jù)所位于的瓦片中的一個(gè),以及將一個(gè)瓦片的瓦片加載列表中的入口設(shè)置為一個(gè)加載狀態(tài),加載狀態(tài)表明需要所述一個(gè)瓦片的圖案數(shù)據(jù)來(lái)繪制圖象。
15.如權(quán)利要求14所述的圖象繪制方法,其中,圖案數(shù)據(jù)獲取操作包括測(cè)試所述紋理的瓦片加載列表,以識(shí)別被設(shè)置為加載狀態(tài)的入口;獲取識(shí)別出其瓦片加載列表中的入口被設(shè)置為加載狀態(tài)的每個(gè)瓦片的圖案數(shù)據(jù);以及將已經(jīng)獲得其圖案數(shù)據(jù)的每個(gè)瓦片的瓦片加載列表中的入口從加載狀態(tài)改變成存在狀態(tài),存在表明已經(jīng)獲得所述一個(gè)瓦片的圖案數(shù)據(jù)。
16.如權(quán)利要求11-15中的任何一個(gè)所述的圖象繪制方法,另外還包括提供紋理存儲(chǔ)器;以及將由圖案數(shù)據(jù)獲取操作獲取的圖案數(shù)據(jù)以塔形數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在紋理存儲(chǔ)器中,塔形數(shù)據(jù)結(jié)構(gòu)包括多層,在每層中存儲(chǔ)著一組相應(yīng)的表示具有不同分辨率的紋理的圖案數(shù)據(jù),其中一組圖案數(shù)據(jù)表示具有最高分辨率的紋理。
17.如權(quán)利要求16所述的圖象繪制方法,其中圖案數(shù)據(jù)屬于在矩形瓦片中排列的紋理象素;所述方法另外還包括提供紋理的瓦片加載列表,瓦片加載列表包括每個(gè)瓦片的入口,所述入口具有一個(gè)表明一個(gè)瓦片的圖案數(shù)據(jù)在塔形數(shù)據(jù)結(jié)構(gòu)中存在的狀態(tài);以及所執(zhí)行的為獲得位于塔形數(shù)據(jù)結(jié)構(gòu)的一層的一個(gè)瓦片的圖案數(shù)據(jù)的圖案數(shù)據(jù)獲取操作包括檢查瓦片加載列表以確定位于在所述一層的下一層的源瓦片的圖案數(shù)據(jù)是否在塔形數(shù)據(jù)結(jié)構(gòu)中存在,其中源瓦片是可以從其合成所述一個(gè)瓦片的圖案數(shù)據(jù)的多個(gè)瓦片,以及當(dāng)源瓦片的圖案數(shù)據(jù)在塔形數(shù)據(jù)結(jié)構(gòu)中存在時(shí),從源瓦片的圖案數(shù)據(jù)合成所述一個(gè)瓦片的圖案數(shù)據(jù)。
18.如權(quán)利要求16所述的圖象繪制方法,其中圖案數(shù)據(jù)屬于在矩形瓦片中排列的紋理象素;將構(gòu)成塔形數(shù)據(jù)結(jié)構(gòu)的頂層的瓦片中的一個(gè)的圖案數(shù)據(jù)接收并存儲(chǔ)在塔形數(shù)據(jù)結(jié)構(gòu)中,在執(zhí)行圖案數(shù)據(jù)識(shí)別操作之前執(zhí)行最終光柵化操作,最終光柵化操作從塔形數(shù)據(jù)結(jié)構(gòu)中現(xiàn)有的圖案數(shù)據(jù)產(chǎn)生圖象數(shù)據(jù);圖案數(shù)據(jù)識(shí)別操作識(shí)別塔形數(shù)據(jù)結(jié)構(gòu)的需要其圖案數(shù)據(jù)以便以更高分辨率繪制圖象的多個(gè)瓦片;以及所述方法還包括在圖案數(shù)據(jù)獲取操作之后重復(fù)最終光柵化操作,以便以更高分辨率重新產(chǎn)生圖象數(shù)據(jù)。
19.如權(quán)利要求18所述的圖象繪制方法,其中,重復(fù)最終光柵化操作、圖案數(shù)據(jù)識(shí)別操作和圖案數(shù)據(jù)獲取操作,直到全部產(chǎn)生了具有最佳分辨率的圖象數(shù)據(jù),圖象數(shù)據(jù)的最佳分辨率對(duì)應(yīng)于小于最高分辨率的繪制屏幕象素的一個(gè)子集。
20.如權(quán)利要求11-15中的任何一個(gè)所述的圖象繪制方法,其中,圖案數(shù)據(jù)獲取操作包括通過(guò)(a)加載圖案數(shù)據(jù),以及(b)合成圖案數(shù)據(jù)這二者中的一個(gè)來(lái)獲取繪制圖象所需的圖案數(shù)據(jù)。
全文摘要
一種繪制裝置,包括繪制裝置通過(guò)其可以接收三維圖形數(shù)據(jù)的輸入路徑、象素/景深緩沖器、基準(zhǔn)緩沖器和繪制機(jī)。三維圖形數(shù)據(jù)包括多邊形數(shù)據(jù),另外還包括定義紋理的紋理數(shù)據(jù)。紋理數(shù)據(jù)包括紋理尺寸數(shù)據(jù)和多組圖案數(shù)據(jù)。每組中的圖案數(shù)據(jù)表示具有不同分辨率的紋理。圖案數(shù)據(jù)構(gòu)成紋理數(shù)據(jù)的主要部分。象素/景深緩沖器和基準(zhǔn)緩沖器分別包括對(duì)應(yīng)于繪制屏幕的象素的第一存儲(chǔ)器單元和第二存儲(chǔ)器單元。繪制機(jī)執(zhí)行初始光柵化操作,僅僅采用多邊形和紋理尺寸數(shù)據(jù)來(lái)為繪制屏幕的每個(gè)象素產(chǎn)生紋理標(biāo)識(shí)符、表明紋理分辨率的層深值以及紋理坐標(biāo),并存儲(chǔ)在基準(zhǔn)緩沖器中。繪制機(jī)還響應(yīng)每個(gè)繪制屏幕象素的存儲(chǔ)在基準(zhǔn)緩沖器中的紋理標(biāo)識(shí)符、層深和紋理坐標(biāo)來(lái)識(shí)別繪制圖象所需的一些圖案數(shù)據(jù)。繪制機(jī)通過(guò)路徑來(lái)獲得被識(shí)別為繪制圖象所需的那些圖案數(shù)據(jù)。最后,繪制機(jī)采用通過(guò)路徑獲得的圖案數(shù)據(jù)來(lái)產(chǎn)生表示圖象的圖象數(shù)據(jù)。所述路徑具有明顯小于繪制機(jī)與緩沖器之間的數(shù)據(jù)傳輸率的數(shù)據(jù)傳輸率。
文檔編號(hào)G06T15/10GK1278351SQ98810791
公開日2000年12月27日 申請(qǐng)日期1998年10月30日 優(yōu)先權(quán)日1997年10月31日
發(fā)明者湯淺敬, M·E·戈斯 申請(qǐng)人:惠普公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1