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

使用3d光柵化算法的2d/3d線條渲染的制作方法

文檔序號(hào):6553650閱讀:448來(lái)源:國(guó)知局
專利名稱:使用3d光柵化算法的2d/3d線條渲染的制作方法
技術(shù)領(lǐng)域
本發(fā)明的技術(shù)領(lǐng)域大體而言包括計(jì)算機(jī)圖形處理,且更具體而言包括其中一組顯示點(diǎn)使用三維光柵化算法來(lái)界定一直線圖形對(duì)象的二維表示的標(biāo)的物。

背景技術(shù)
目前,計(jì)算的每一方面,從創(chuàng)作動(dòng)畫到簡(jiǎn)單任務(wù)(例如文字處理和電子郵件),均使用許多圖形來(lái)為用戶創(chuàng)造一個(gè)更直觀的工作環(huán)境。視頻適配器是圖形卡,其用于插入個(gè)人計(jì)算機(jī)中來(lái)給計(jì)算機(jī)提供顯示圖形圖像的能力。包括其自身的圖形處理器的視頻適配器通常被稱為圖形加速器。
由于它們包含自身的存儲(chǔ)器和處理器,圖形加速器使計(jì)算機(jī)能夠在顯示屏上更快地顯示復(fù)雜圖像。圖形加速器可比計(jì)算機(jī)使用的通用中央處理器(CPU)獲得更好的結(jié)果,因?yàn)槠涮幚砥鲗iT用于計(jì)算圖形變換。此外,當(dāng)圖形加速器正在處理圖形計(jì)算時(shí),圖形加速器會(huì)釋放計(jì)算機(jī)的CPU,以便其執(zhí)行其他命令。
在計(jì)算機(jī)的早期,圖形由二維圖像一點(diǎn)、線和方塊組成,其只需要二維(2-D)圖形加速器。對(duì)顯示深度和其他屬性的需求推動(dòng)了三維(3-D)圖形加速器的發(fā)展。連接至顯示屏的裝置通常包括2-D圖形加速器和3-D圖形加速器,其中系統(tǒng)根據(jù)需要在兩者之間切換。然而,作為一種節(jié)約成本的措施,如今市場(chǎng)上銷售的裝置淘汰了2-D圖形加速器,使3-D圖形加速器來(lái)執(zhí)行以前由2-D圖形加速器和3-D圖形加速器聯(lián)合執(zhí)行的所有任務(wù),包括繪制線條。
由3-D圖形加速器繪制的傳統(tǒng)線條通常由兩個(gè)完全相同的長(zhǎng)三角形構(gòu)成,其中一個(gè)三角形倒置,且底邊與另一三角形底邊鄰靠,以形成一非常長(zhǎng)而細(xì)的長(zhǎng)方形。有時(shí)稱為三角形四邊(四邊形)線條,這種直線具有許多用途。例如,用于文字處理程序和互聯(lián)網(wǎng)瀏覽器程序的下拉式菜單通常由直線界定邊的文本組成。蜂窩電話屏幕顯示的菜單選項(xiàng)可包括由直線界定及分隔的文本。帶角度的直線具有許多圖形應(yīng)用,例如給予在裝置顯示屏上所顯示的房子或大量架子的線框圖深度。
對(duì)于采用3-D圖形加速器來(lái)繪制直線的裝置而言,當(dāng)在計(jì)算機(jī)屏幕上的屏幕空間中數(shù)字化地表示模擬線段時(shí)使用三角形四邊線條會(huì)產(chǎn)生問(wèn)題。例如,組成三角形四邊線條的兩個(gè)三角形中的每一個(gè)均具有三個(gè)頂點(diǎn),于是總共有六個(gè)頂點(diǎn)。這六個(gè)頂點(diǎn)需要許多存儲(chǔ)空間來(lái)存儲(chǔ),而且需要許多處理時(shí)間來(lái)渲染所有六個(gè)頂點(diǎn)。數(shù)字化表示的三角形四邊線條可具有一粗度,而其對(duì)應(yīng)的模擬線條卻不需要粗度。此外,大量的處理時(shí)間專用于對(duì)將不會(huì)渲染成三角形四邊線條的一部分的像素進(jìn)行光柵化。因此,在所屬技術(shù)領(lǐng)域中需要一種使用現(xiàn)有的3-D圖形加速器來(lái)渲染直線段的有效技術(shù)。


發(fā)明內(nèi)容
通過(guò)利用直線數(shù)據(jù)作為特定三角形圖元的一部分以使渲染三角形圖元會(huì)產(chǎn)生一組使用三維光柵化算法來(lái)界定直線圖形對(duì)象的二維表示的顯示點(diǎn),本文所揭示的實(shí)施例解決了上文所述的需求。
在一實(shí)施例中,三維(3D)圖形加速器可接收數(shù)據(jù)。所述數(shù)據(jù)可界定三角形圖元的三個(gè)頂點(diǎn)(x0,y0,K0)、(x1,y1,K1)、及(x2,y2,K2)。屬性K2=(K0+K1)/2和座標(biāo)(x0,y0),(x1,y1)、及(x2,y2)形成一等腰三角形圖元。座標(biāo)(x0,y0)和(x1,y1)界定所述等腰三角形圖元的底邊。所述等腰三角形圖元可使用所述三維光柵化算法來(lái)渲染,以獲得一組界定所述等腰三角形圖元的底邊的二維表示的顯示點(diǎn)。



圖1是系統(tǒng)100,在系統(tǒng)100中可實(shí)施一些實(shí)施例; 圖2表示要繪制成顯示裝置118上的屏幕空間中的直線的模型空間直線200; 圖3是從直線200構(gòu)造三角形圖元的方法300的流程圖; 圖4是等腰三角形400的平面圖; 圖5是直線200重畫為直線500的平面圖; 圖6A是處于垂直位置的直線602的平面圖; 圖6B是處于水平位置的直線606的平面圖; 圖6C是在一位置上往右下方傾斜的直線610的平面圖; 圖6D是在一位置上往左下方傾斜的直線612的平面圖; 圖7是使用如上述方程式(35)中設(shè)定在(x2,y2)=(3.90,2.21)處的第三點(diǎn)704繪制的等腰三角形702的平面圖; 圖8是用于繪制等腰三角形圖元702的方法800; 圖9是具有位于直線500周圍的邊框902的三角形702的平面圖; 圖10是等腰三角形702的平面圖;及 圖11是可用來(lái)實(shí)施一些實(shí)施例的計(jì)算機(jī)系統(tǒng)1100。

具體實(shí)施例方式 圖1是系統(tǒng)100,在系統(tǒng)100中可實(shí)施一些實(shí)施例。系統(tǒng)100可包括系統(tǒng)處理器102、系統(tǒng)存儲(chǔ)器104、輸入裝置106(例如鍵盤和鼠標(biāo))、以及3D圖形加速器108。各裝置可通過(guò)總線110通信。
系統(tǒng)處理器102可以是主計(jì)算機(jī)(例如臺(tái)式或膝上型計(jì)算機(jī)、服務(wù)器、游戲控制臺(tái)、或蜂窩電話)的中央處理器(CPU)。系統(tǒng)存儲(chǔ)器104可包括各種形式的存儲(chǔ)器資源,例如永久性存儲(chǔ)裝置、大容量存儲(chǔ)裝置、可移動(dòng)存儲(chǔ)裝置、和易失性讀寫存儲(chǔ)器(例如隨機(jī)存取存儲(chǔ)器(RAM))。與系統(tǒng)存儲(chǔ)器104相結(jié)合,系統(tǒng)處理器102可處理程序化指令并執(zhí)行任務(wù)。
3D圖形加速器108可給予系統(tǒng)100快速而有效地顯示圖形圖像的能力。例如,當(dāng)3D圖形加速器108正在處理圖形計(jì)算時(shí),3D圖形加速器108可釋放系統(tǒng)處理器102,以便執(zhí)行其他命令。3D圖形加速器108可包括繪圖存儲(chǔ)器112、繪圖處理器114和幀緩沖器116,且顯示裝置118可連接至3D圖形加速器108。
繪圖存儲(chǔ)器112可接收來(lái)自系統(tǒng)處理器102的數(shù)據(jù)和指令,并存儲(chǔ)所述數(shù)據(jù)和指令以供繪圖處理器114使用。繪圖處理器112可包括一些組件,例如一加法器、一乘法器、以及多個(gè)多路復(fù)用器,以處理繪圖存儲(chǔ)器112中的數(shù)據(jù)和指令。在該過(guò)程中,繪圖處理器114可根據(jù)所存儲(chǔ)的指令將數(shù)據(jù)光柵化。在一實(shí)施例中,繪圖存儲(chǔ)器112可作為各種各樣的顏色、深度、模板等的便箋式存儲(chǔ)器。
計(jì)算機(jī)屏幕和其他顯示屏,例如用在蜂窩手機(jī)上的顯示屏,可通過(guò)選擇性地照亮像素網(wǎng)格(或陣列)來(lái)顯示圖像。這些位圖或光柵圖像完全由用于特定顯示裝置屏幕中的像素位置的一組強(qiáng)度來(lái)確定。光柵處理可包括將由一些形狀構(gòu)成的面向?qū)ο蟮膱D像轉(zhuǎn)換成位像,將每一位設(shè)計(jì)成用特定強(qiáng)度照亮顯示裝置118上的一像素。為了將數(shù)據(jù)光柵化,繪圖處理器114可裝載并分析數(shù)據(jù)來(lái)產(chǎn)生位圖,其中位圖可存儲(chǔ)在幀緩沖器116中。位圖可以是一個(gè)文件或圖像結(jié)構(gòu),該圖像結(jié)構(gòu)位對(duì)位地表示要在顯示裝置118上顯示的圖像。此外,幀緩沖器116可直接附連至總線110。
圖2表示要繪制成顯示裝置118上的屏幕空間中的直線的模型空間直線200。直線200可從起點(diǎn)202延伸至終點(diǎn)204。起點(diǎn)202可用座標(biāo)(x0,y0,z0)來(lái)指定,且終點(diǎn)204可用座標(biāo)(x1,y1,z1)來(lái)指定。因?yàn)樵谠搶?shí)例中的直線200位于與顯示裝置118上的屏幕空間平行的一平面中,所以可用座標(biāo)(x0,y0)來(lái)指定起點(diǎn)202,并用座標(biāo)(x1,y1)來(lái)指定終點(diǎn)204。
圖3是用于從直線200構(gòu)造三角形圖元的方法300的流程圖。在步驟302處,系統(tǒng)處理器102可接收關(guān)于生成和定位一直線的輸入。所述輸入可來(lái)自人員用戶,例如使用計(jì)算機(jī)輔助制圖程序包來(lái)繪制飛機(jī)機(jī)翼的線框模型的人,或可來(lái)自應(yīng)用程序請(qǐng)求,例如為下拉式菜單繪制一線條的請(qǐng)求、繪制要在蜂窩電話的觀看屏上顯示的郵件信封的后視圖輪廓的請(qǐng)求、或繪制出現(xiàn)在計(jì)算機(jī)游戲中的一個(gè)或多個(gè)線條的請(qǐng)求。在兩種方式的任一方式中,均可使用圖1所示輸入裝置106將輸入發(fā)送至系統(tǒng)處理器102,其中所述輸入包括關(guān)于生成和定位直線200的信息。
在步驟304處,系統(tǒng)處理器102可將所接收的輸入轉(zhuǎn)換成指令。所述指令可包括一命令,例如繪制線條(draw_line),后面跟有直線200的兩個(gè)端點(diǎn)的x、y座標(biāo)。該線條的起點(diǎn)可用零(“0”)來(lái)指定,例如(x0,y0),且該線條的終點(diǎn)可用一(“1”)來(lái)指定,例如(x1,y1)。通常從一左上像素開(kāi)始由左至右及然后由上至下地對(duì)三角形進(jìn)行光柵化。如果在到達(dá)所擬定的三角形中的任何其他像素之前,光柵化處理到達(dá)了包含起點(diǎn)(x0,y0)的像素,則該處理可確定直線200的位置。
為了確保所擬定的三角形中的第一像素是起點(diǎn)(x0,y0),直線200的起點(diǎn)(x0,y0)可以是直線200的下述端點(diǎn)其中y0≥y1且其中x0是最靠近x軸的座標(biāo)(其中x0≤x1)。換句話說(shuō),起點(diǎn)可以是具有y模型空間座標(biāo)最小值的端點(diǎn),且當(dāng)兩個(gè)y模型空間座標(biāo)相等時(shí),起點(diǎn)則可以是具有x模型空間座標(biāo)最小值的端點(diǎn)。
除其位置以外,可由其他屬性來(lái)界定直線200的每一端點(diǎn),例如漫射顏色(阿爾法(“α”)、R、G、B)(例如,α、紅、綠、藍(lán))、高光顏色(RS、GS、BS)、紋理座標(biāo)(u,v)、及霧化。因此,系統(tǒng)處理器102的一般指令可作為以下命令字符串(1)出現(xiàn) draw_line(x0,y0,K0,x1,y1K1) (1) 或 draw_line(x0,y0,n0α,n0R,n0G,n0B,n0RS,n0GS,n0BS,n0u,n0v,x1,y1,n1α,n1R,n1G,n1B,n1RS,n1GS,n1BS,n1u,n1v)(1) 最后的數(shù)字或字符可標(biāo)識(shí)特定屬性。用于x、y位置的數(shù)值可以是任何數(shù)字,且用于其他屬性的數(shù)值可以從0至255(例如0至28)。作為一數(shù)字實(shí)例,指令可如以下命令字符串(2)所示 draw_line(1.51,2.21,8α,240R,0G,56B,23RS,0GS,0BS,4u,256v,3.15,4.48,45α,210R,0G,7B,99RS,180GS,45BS,0u,16v) (2) 根據(jù)命令字符串(2)繪制的直線可以是從起點(diǎn)(x0,y0)=(1.51,2.21)到終點(diǎn)(x1,y1)=(3.15,4.48)的直線,屬性的數(shù)值如規(guī)定所述。
2D圖形加速器可設(shè)計(jì)成通過(guò)向量圖形處理命令字符串(2)。然而,3D圖形加速器處理通常稱為圖元的微小幾何對(duì)象。四邊形、三角形、n邊形是圖元的實(shí)例,而線條不是圖元?,F(xiàn)有的3D圖形加速器未設(shè)計(jì)成直接處理命令字符串(2)。
如果一裝置缺乏2D圖形加速器而包括3D圖形加速器,則在裝置的屏幕上看到的所有對(duì)象實(shí)際上均由圖元組成。圖元的邊框由直線段組成。僅將圖元邊框的一條線段光柵化可產(chǎn)生一直線。因此,假如命令字符串(2)包括形成一圖元的信息,則3D圖形加速器可處理所述圖元以獲得一直線來(lái)擬合命令字符串(2)的直線。
在評(píng)估了各種圖元之后,三角形圖元看起來(lái)是通過(guò)3D圖形加速器108處理成直線的好的候選者。每一3D對(duì)象可分割成多個(gè)三角形,而三角形卻不能分割成除三角形以外的任何東西。3D空間中的三角形也是2D空間中的三角形。因?yàn)樘幚淼氖虑樯倭?,所以繪制三角形比繪制更高階的多邊形要簡(jiǎn)單得多。這就是為什么將三角形普遍用于計(jì)算機(jī)圖形中的一些原因。
三角形具有三條邊,且因此由三個(gè)點(diǎn)或頂點(diǎn)構(gòu)成。除其他信息(例如顏色值(或指數(shù))或紋理指數(shù))之外,三角形的每一頂點(diǎn)可包含三角形的點(diǎn)的坐標(biāo)。為了將3D空間中界定的三角形轉(zhuǎn)換至2D(屏幕)空間,可將三角形的頂點(diǎn)從3D投射到2D空間,并然后進(jìn)行光柵化。
如果3D圖形加速器只能處理圖元,則可隨實(shí)例性起點(diǎn)(1.51,2.21)和終點(diǎn)(3.15,4.48)一起提供第三點(diǎn),以使所述三點(diǎn)可形成三角形圖元。在306處,系統(tǒng)處理器102可開(kāi)始選擇第三點(diǎn)來(lái)加入至步驟304的指令,以使所述三點(diǎn)形成三角形。
在將位于三角形中的像素光柵化時(shí),在三角形頂點(diǎn)處提供的值實(shí)質(zhì)上為每一經(jīng)光柵化的像素提供一加權(quán)平均值。例如,在一給定像素處所計(jì)算(和顯示)的顏色紅色可受到所述給定像素距三個(gè)頂點(diǎn)中的每一頂點(diǎn)的距離以及受到在每一頂點(diǎn)處的漫射顏色紅色(R)的屬性值的影響。像素越靠近一頂點(diǎn),則該頂點(diǎn)的紅色屬性對(duì)該像素的影響可越大。像素越遠(yuǎn)離一頂點(diǎn),則該頂點(diǎn)的紅色屬性對(duì)該像素的影響可越小。
較佳地,選擇第三點(diǎn)的屬性值,以使它們對(duì)沿直線200的像素的經(jīng)計(jì)算的屬性值幾乎沒(méi)有影響甚至毫無(wú)影響。例如,如果選擇的第三點(diǎn)的屬性值是直線200的起點(diǎn)和終點(diǎn)的屬性值的平均值,則第三點(diǎn)的屬性值可對(duì)沿直線200的像素的所計(jì)算的屬性值幾乎沒(méi)有影響甚至毫無(wú)影響。此外,第三點(diǎn)的座標(biāo)值應(yīng)離直線200的起點(diǎn)和終點(diǎn)等距,以使其位置對(duì)沿直線200上的像素的所計(jì)算的屬性值幾乎沒(méi)有影響甚至毫無(wú)影響。
等腰三角形是至少兩側(cè)邊長(zhǎng)度相等的三角形。由這兩側(cè)邊形成的頂點(diǎn)面對(duì)底邊。等腰三角形的頂點(diǎn)座標(biāo)(x2,y2)與等腰三角形底邊的起點(diǎn)(x0,y0)和終點(diǎn)(x1,y1)等距。此外,平分該頂點(diǎn)的一條線經(jīng)過(guò)底邊的中點(diǎn),且該線垂直于底邊。當(dāng)這條線從底邊的中點(diǎn)開(kāi)始并垂直延長(zhǎng)時(shí),它同時(shí)平分了三角形的周長(zhǎng)和面積,且可稱為“B-線”。
通過(guò)將直線200安置到一等腰三角形圖元中,并通過(guò)選擇頂點(diǎn)(x0,y0)和頂點(diǎn)(x1,y1)的屬性值的平均值作為頂點(diǎn)(x2,y2)的屬性值,頂點(diǎn)(x2,y2)的座標(biāo)和屬性值可對(duì)沿直線200上的像素的所計(jì)算屬性值幾乎沒(méi)有影響甚至毫無(wú)影響。如果成立,則可通過(guò)將命令字符串(2)并入所述等腰三角形中而由3D圖形加速器108根據(jù)命令字符串(2)來(lái)繪制直線。這一實(shí)際情況可由下文的數(shù)學(xué)方式來(lái)顯示。
圖4是一等腰三角形的平面圖。等腰三角形400可包括底邊402、側(cè)邊404和側(cè)邊406,其中側(cè)邊404的長(zhǎng)度“b”等于側(cè)邊406的長(zhǎng)度“b”。等腰三角形400進(jìn)一步可包括頂點(diǎn)408、頂點(diǎn)410和頂點(diǎn)412,其中頂點(diǎn)412可面向底邊402,底邊402具有長(zhǎng)度“a”。中點(diǎn)(xm,ym)414可精確位于沿頂點(diǎn)408和頂點(diǎn)410之間的長(zhǎng)度“a”的中間位置。此外,B-線416可從中點(diǎn)414沿高度“h”延長(zhǎng)至頂點(diǎn)412。在圖4所示實(shí)例中,底邊402可以是由3D圖形加速器108渲染的并顯示在顯示裝置118上的直線段。
位于等腰三角形400中的每一像素可具有屬性K,包括屬性α、R、G、B、RS、GS、BS、u、及v。在頂點(diǎn)408、頂點(diǎn)410和頂點(diǎn)412中每一頂點(diǎn)的屬性值可分別由K0、K1和K2表示。因此,在等腰三角形400之內(nèi)存在屏幕空間中x、y位置的線性二元函數(shù)K使得 K(x,y)=(Ak)(x)+(Bk)(y)+Ck (3) 其中, K=α,R,G,B,RS,GS,BS,u和v; (x,y)表示一個(gè)屏幕像素的屏幕空間座標(biāo);且Ak、Bk和Ck表示線性系數(shù)。
可通過(guò)與頂點(diǎn)408、410和412相關(guān)的方程式來(lái)獲得用于一給定的x,y屏幕空間座標(biāo)的線性系數(shù)Ak、Bk和Ck。通過(guò)采用光柵化算法并確定用于給定的x,y屏幕空間座標(biāo)的線性系數(shù)Ak、Bk和Ck,可根據(jù)方程式(3)來(lái)獲得在對(duì)應(yīng)的x,y屏幕空間座標(biāo)中的特定像素屬性的值。
與頂點(diǎn)408、410和412相關(guān)聯(lián)的線性系數(shù)Ak、Bk和Ck的方程式包括以下方程式 Ak=[(A0)(K0)+(A1)(K1)+(A2)(K2)]/面積(4) Bk=[(B0)(K0)+(B1)(K1)+(B2)(K2)]/面積(5) Ck=[(C0)(K0)+(C1)(K1)+(C2)(K2)]/面積(6) 其中,等腰三角形的面積是 面積=(1/2)(a)(h)=(1/2)(a)[(b^2)-(1/4)(a^2)]^(1/2) (7) 且其中所述線性系數(shù)可表示為 A0=y(tǒng)1-y2A1=y(tǒng)2-y0A2=y(tǒng)0-y1 (8) B0=x2-x1B1=x0-x2B2=x1-x0 (9) C0=(x1)(y2)-(x2)(y1)C1=(x2)(y0)-(x0)(y2)C2=(x0)(y1)-(x1)(y0) (10) 三維光柵化算法包括方程式(3)、(4)、(5)和(6)。如上文所述,如果將K0和K1的屬性值的平均值選擇作為K2的屬性值(例如,第三點(diǎn)的屬性值),則K2的屬性值可對(duì)沿底邊402上的像素的所計(jì)算屬性值K(x,y)幾乎沒(méi)有影響甚至毫無(wú)影響。其可用數(shù)學(xué)方程表達(dá)為 K2=(K0+K1)/2(11) 因?yàn)檫x擇用于渲染的三角形是一等腰三角形,方程式(8)、(9)和(10)中的y2的值可采用y0和y1來(lái)表達(dá)。通過(guò)將等腰三角形400進(jìn)行定向,以使如圖4中所示x0=x1,y2可簡(jiǎn)單地表示為 y2=(y0+y1)/2(12) 如上文所述, Ak=[(A0)(K0)+(A1)(K1)+(A2)(K2)]/面積(4) 將方程式(8)代入方程式(4)中, Ak=[(y1-y2)(K0)+(y2-y0)(K1)+(y0-y1)(K2)]/面積(13) 將方程式(11)代入方程式(13)中, Ak=[(y1-y2)(K0)+(y2-y0)(K1)+(y0-y1)((K0+K1)/2)]/面積(14) 將方程式(12)代入方程式(14)中, Ak=[(y1-(y0+y1)/2)(K0)+ ((y0+y1)/2-y0)(K1)+ (y0-y1)((K0+K1)/2]/面積 (15) 相乘和相除得到 Ak=[(K0)(y1)-.5(K0)(y0)-.5(K0)(y1)+ .5(K1)(y0)+.5(K1)(y1)-(K1)(y0)+ .5(K0)(y0)-.5(K0)(y1)+.5(K1)(y0)-.5(K1)(y1)]/面積 (16) 重新排列, Ak=[-.5(K0)(y0)+.5(K0)(y0)+ (K0)(y1)-.5(K0)(y1)-.5(K0)(y1)+ .5(K1)(y0)-(K1)(y0)+.5(K1)(y0)+ .5(K1)(y1)-.5(K1)(y1)]/面積 (17) 或 Ak=
/面積=0 (18). 如上所述, K(x,y)=(Ak)(x)+(Bk)(y)+Ck (3) 將方程式(18)代入方程式(3)中, K(x,y)=(0)(x)+(Bk)(y)+Ck(19) 或 K(x,y)=(Bk)(y)+Ck (20). 通過(guò)使用等腰三角形并設(shè)定K2的值等于K0和K1的平均值,去掉方程式(3)中的量(Ak)(x)而使K(x,y)的值成為僅含y的一元函數(shù),如方程式(20)中所示。這就是所需要的結(jié)果(x2,y2)離(x0,y0)或(x1,y1)的距離及K2的屬性值均不會(huì)影響沿底邊402(選擇要繪制的直線段)的屬性值。
如上文所述,系統(tǒng)處理器102可在步驟306處首先選擇第三點(diǎn)來(lái)加入至步驟304的指令,以使這三點(diǎn)形成三角形。
對(duì)于來(lái)自命令字符串(2)的直線200的起點(diǎn)(x0,y0)=(1.51,2.21)且終點(diǎn)(x1,y1)=(3.15,4.48),則直線200(xm,ym)的中點(diǎn)是 (xm,ym)=(x1+x0)/2,(y1+y0)/2)(21) (xm,ym)=(2.33,3.35)=((1.51+3.15)/2,(2.21+4.48)/2). 使用直線方程式的斜率、起點(diǎn)(1.51,2.21)和終點(diǎn)(3.15,4.48),直線200的斜率是 m=(y1-y0)/(x1-x0) (22) 1.38=(2.21-4.48)/(1.51-3.15) 為了找到直線200的y截距“b”,可使用通用的直線方程式 y=mx+b or b=y(tǒng)-mx b=2.21-1.38(1.51) b=0.12(23) 由于斜率m=1.38,直線200的直線方程式是 y=1.38x+0.12 (24) 直線200的長(zhǎng)度(底邊之長(zhǎng))是 長(zhǎng)度=[(x1-x0)^2+(y1-y0)^2)]^(1/2) 2.80=((1.51-3.15)^2+(2.214.48)^2))^(1/2))(25) 經(jīng)過(guò)直線200中點(diǎn)的垂直線的斜率m是直線200的斜率的負(fù)倒數(shù),在此m=1.38。因此,經(jīng)過(guò)直線200中點(diǎn)的垂直線的斜率m是-0.72(=-(1/1.38))??蓮姆匠淌?23)得到經(jīng)過(guò)直線200中點(diǎn)的垂直線的y截距,即3.35=(-.072)(2.33)+b,或b=5.03。因此,第三點(diǎn)(x2,y2)可以是沿以下方程式表示的直線上的一點(diǎn) y2=-0.72(x2)+5.03(26) 圖5是直線200重畫為直線500的平面圖。直線500位于起點(diǎn)502與終點(diǎn)504之間并包含中點(diǎn)506(xm,ym)。直線508定位經(jīng)過(guò)中點(diǎn)504,作為直線200的垂直平分線。如上文所述,第三點(diǎn)(x2,y2)可以是沿根據(jù)方程式(26)的直線上的一點(diǎn)y2=-0.72(x2)+5.03。此外,如果光柵化從圖1所示顯示裝置118的左上角由右至左然后由上至下進(jìn)行,則可能需要使光柵化處理能夠確定直線500的位置。確定直線500的起點(diǎn)502所在位置的一種方式是沿直線508選擇第三點(diǎn),以使由光柵化處理所識(shí)別出的位于所計(jì)劃的等腰三角形之內(nèi)的第一像素是與直線500的起點(diǎn)(x0,y0)(即點(diǎn)502)相關(guān)聯(lián)的像素。
圖6A、6B、6C和6D圖解說(shuō)明四種可能的布置,所要渲染的直線可以這些布置進(jìn)行定位。圖6A是直線602處于垂直位置的平面圖。圖6B是直線606處于水平位置的平面圖。圖6C是直線610處于往右下方傾斜位置的平面圖。圖6D是直線612處于往左下方傾斜位置的平面圖。
在圖6A中,直線602的起點(diǎn)(x0,y0)的x座標(biāo)和終點(diǎn)(x1,y1)的x座標(biāo)是相等的(即x0=x1)。在此,如果y2沿垂直平分直線602的直線(即其中y2=(y1+y0)/2)來(lái)定位,則可形成一等腰三角形。此外,如果x2大于直線602的起點(diǎn)(x0,y0)的x座標(biāo)值,則所述由左至右、由上至下的光柵化處理將在到達(dá)所擬定的等腰三角形之內(nèi)的任何其他像素之前首先到達(dá)與起點(diǎn)(x0,y0)(圖6A中所示的點(diǎn)604)相關(guān)聯(lián)的像素。
因?yàn)楣鈻呕幚硇枰幻娣e來(lái)起作用,所以如下文所示x2≠x0成立。在圖6A中,x0=x1。如果x2=x0,則x0=x1=x2,從而提供一直線供3D圖形加速器108來(lái)處理。由于下列原因,處理三角形的3D圖形加速器108不能處理這一直線。如果x2=x0,則x0=x1=x2且三角形圖元的面積將等于零(明確地說(shuō),h=0)。如果面積等于零,則對(duì)于方程式(4)、(5)和(6)而言,這會(huì)導(dǎo)致除以零的錯(cuò)誤,且因此會(huì)阻止對(duì)直線進(jìn)行任何渲染。因此,x2≠x0。
可存在x2可小于直線602的起點(diǎn)(x0,y0)的x座標(biāo)值的情況,此將允許光柵化處理在到達(dá)所擬定的等腰三角形之內(nèi)的任何其他像素之前首先到達(dá)與起點(diǎn)(x0,y0)(圖6A所示起點(diǎn)604)相關(guān)聯(lián)的那一像素。然而,針對(duì)x2<x0確定可允許的x2值可能需要額外的計(jì)算時(shí)間和處理器時(shí)間。因此,作為如圖6A中所示在具有一直線的情況中選擇第三點(diǎn)的一部分,x2較佳大于x0(即x2>x0)。
可進(jìn)一步改進(jìn)如圖6A中所示在具有一直線的情況中對(duì)第三點(diǎn)的選擇。如果選擇第三點(diǎn)的x2座標(biāo)會(huì)使方程式(4)、(5)和(6)的面積計(jì)算相對(duì)簡(jiǎn)單,則此可節(jié)省處理時(shí)間,且因此節(jié)省功耗。從上文的方程式(7)得出,等腰三角形的面積是 面積=(1/2)(a)(h) (7) 其中,“a”可以是直線602的長(zhǎng)度,且h可以是從直線602的中點(diǎn)延長(zhǎng)至第三點(diǎn)的B-線的長(zhǎng)度。如果h設(shè)定為等于2/a,則面積可等于1.00。因此,一種節(jié)省功率的方式可以是將面積設(shè)定為等于1,而無(wú)需實(shí)際計(jì)算面積。
圖6A所示直線602的長(zhǎng)度“a”等于y1-y0。此外,圖6A所示的所擬定的等腰三角形的高度“h”等于x2-x0。換句話說(shuō),使 h=2/a (27) 以得到, x2-x0=2/(y1-y0) (28) 或, x2=x0÷2/(y1-y0) (29) 總結(jié)上文 如果x0=x1,則使x2=x0+2/(y1-y0)且y2=(y1+y0)/2(30) 在圖6B中,直線602的起點(diǎn)(x0,y0)的y座標(biāo)和終點(diǎn)(x1,y1)的y座標(biāo)相等(或y0=y(tǒng)1)。在此,如果沿垂直平分直線602的直線定位x2(即x2=(x1+x0)/2),則可形成一等腰三角形。此外,如果y2大于直線602的起點(diǎn)(x0,y0)的y座標(biāo)值,則由左至右、由上至下的光柵化處理將在到達(dá)所擬定的等腰三角形之內(nèi)的任何其他像素之前首先到達(dá)與起點(diǎn)(x0,y0)(圖6B中所示點(diǎn)608)相關(guān)聯(lián)的像素。沿用如圖6A所采用的同一邏輯, 如果y0=y(tǒng)1,則使y2=y(tǒng)0+2/(x1-x0)且x2=(x1+x0)/2(31) 在圖6C中,直線610的起點(diǎn)(x0,y0)的y座標(biāo)與終點(diǎn)(x1,y1)的y座標(biāo)不相等(或y0≠y1)。此外,x0<x1。與圖6A和圖6B類似,如果沿垂直平分直線610的線來(lái)定位第三點(diǎn)(x2,y2),則可形成一等腰三角形。為了確保在任何其他像素之前首先光柵化包含圖6C所示的點(diǎn)612的像素,則y2不得小于y0,且x2不得小于x0。換句話說(shuō), 如果y0≠y1&x0<x1,則使y2≥y0且x2≥x0 (32) 可能需要使為圖6C中所布置的直線擬定的等腰三角形的面積相對(duì)便于計(jì)算,以節(jié)省功率。根據(jù)方程式(27),這可意味著 H=2/a (27) 圖5所示的直線500適合圖6C所示的直線情況,并用作開(kāi)發(fā)該建議的好實(shí)例。
應(yīng)記得,從方程式(25)計(jì)算得來(lái)的直線200(直線500)的長(zhǎng)度“a”為2.80。如果h=2/(2.80),則這一等腰三角形的面積具有值“1”。此外,根據(jù)方程式(24),直線500由直線方程式y(tǒng)=1.38x+0.12來(lái)界定,且直線500的垂直平分線508由來(lái)自方程式(26)的直線方程式y(tǒng)2=-0.72(x2)+5.03來(lái)界定。
由于h=2/(2.80)、直線方程式y(tǒng)2=-0.72(x2)+5.03、且位于經(jīng)過(guò)直線500中點(diǎn)的垂直線上的一點(diǎn)為(2.33,3.35)=(xm,ym)(參見(jiàn)圖5),因而可利用方程式(25)來(lái)得到(x2,y2),改寫如下 h=[(x2-xm)^2+(y2-ym)^2)]^(1/2) (33) 2/(2.80)=[(x2-2.33)^2+(y2-3.35)^2)]^(1/2)(34) 將 y2=0.72x2+5.03 代入方程式(34)中, (2/(2.80))^2=(x2-2.33)^2+((-0.72x2+5.03)-3.35)^2 0.51=(x2-2.33)^2+((-0.72x2+1.68)^2 0.51=[(x2)^2..4.66x2+5.43]+
0.51=1.52(x2)^2-7.08x2+8.25 0=1.52(x2)^2-7.08x2+7.74 在方程式兩側(cè)均除以1.52, 0=(x2)^2-4.66x2+5.09 用整數(shù)來(lái)因式分解該多項(xiàng)式,得到以下結(jié)果 0=(x2-2.91)(x2-1.75) x2=2.91 or x2=1.75 應(yīng)記得,對(duì)于布置在圖6C中的直線而言,x2≥x0。對(duì)于圖5所示的直線500,x0=1.51。因此,在此情形下,x2可以是2.91或1.75。如果將x2設(shè)定成等于2.91(x2=2.91),y2=2.93=-0.72(2.91)+5.03,則 (x2,y2)=(2.33,2.93) (35) 一種節(jié)省計(jì)算功率的替代方式是使圖6C中的布置為x2=x0或y2=y(tǒng)0。對(duì)于圖5中所示直線200(y2=y(tǒng)0),然后可從直線508的方程式簡(jiǎn)單地計(jì)算得到x2,如下所示 y2=2.21=-0.72x2+5.03 x2=3.90=(2.21-5.03)/(-0.72) 因此 (x2,y2)=(3.90,2.21) 作為對(duì)于圖6C中的布置的第三點(diǎn)座標(biāo)(x2,y2)的簡(jiǎn)單計(jì)算的一個(gè)交換是在確定圖6C所示等腰三角形的面積時(shí)需要更多計(jì)算。對(duì)于圖6C,上文可總結(jié)為 如果y0≠y1且x0<x1,使y2≥y0且x2≥x0 并使(面積=1或y2=y(tǒng)0或x2=x0)(36) 圖7是用如上述方程式(35)中設(shè)定為(x2,y2)=(3.90,2.21)的第三點(diǎn)704繪制的等腰三角形702的平面圖。等腰三角形702包括在起點(diǎn)502與終點(diǎn)504之間的直線500。
在圖6D中,直線610的起點(diǎn)(x0,y0)的y座標(biāo)和終點(diǎn)(x1,y1)的y座標(biāo)不相等(即y0≠y1)。并且,x0>x1。與圖6C類似,如果沿垂直平分直線614的直線來(lái)定位第三點(diǎn)(x2,y2),則可形成等腰三角形。為了確保在任何其他像素之前首先光柵化包含圖6D所示點(diǎn)616的像素,y2應(yīng)大于ym,且x2應(yīng)大于xm。換句話說(shuō), 如果y0≠y1且x0>x1,使y2>(y1+y0)/2且x2>(x1+x0)/2(37) 對(duì)于處理圖6D中的直線而言,可如圖6C直線中一樣作出節(jié)省計(jì)算功率的類似選擇。除方程式(37)之外,將面積設(shè)定為等于1(面積=1)可減輕在計(jì)算面積的處理器上的計(jì)算負(fù)載,但是可增加在確定第三點(diǎn)座標(biāo)(x2,y2)的處理器上的計(jì)算負(fù)載。或者,除方程式(37)以外,設(shè)定x2=x0或設(shè)定y2=y(tǒng)1可減輕在計(jì)算第三點(diǎn)座標(biāo)(x2,y2)的處理器上的計(jì)算負(fù)載,但是可增加在計(jì)算面積的處理器上的計(jì)算負(fù)載。這可總結(jié)為 如果y0≠y1 且x0>x1,使y2>(y1+y0)/2且x2>(x1+x0)/2 并使(面積=1或y2=y(tǒng)1或x2=x0) (38) 通常,圖1所示系統(tǒng)處理器102既可確定該三角形圖元的第三點(diǎn)的座標(biāo)(x2,y2)又可確定三角形圖元的面積。一個(gè)系統(tǒng)處理器在計(jì)算三角形圖元面積方面可比計(jì)算三角形圖元的第三點(diǎn)的座標(biāo)方面更有效率,且可通過(guò)使面積=1作為方程式(38)的默認(rèn)值來(lái)利用這一效率。在步驟302處,如果系統(tǒng)處理器102接受輸入以生成并定位三條線,其中y0≠y1且x0>x1,則系統(tǒng)處理器102可經(jīng)編程以使對(duì)于第一線面積=1,對(duì)于第二線y2=y(tǒng)1,對(duì)于第三線x2=x0。通過(guò)這種方式,與對(duì)于所有三條直線面積=1相比,系統(tǒng)處理器102可使用更多的處理電路。
可將圖6A至圖6D的方程式總結(jié)成包括用于選擇第三點(diǎn)(x2,y2)的下列方程式 如果x0=x1,則使x2=x0+2/(y1-y0)且y2=(y1+y0)/2 (30) 如果y0=y(tǒng)1,則使y2=y(tǒng)0+2/(x1-x0)且x2=(x1+x0)/2 (31) 如果y0≠y1且x0<x1,則使y2≥y0且x2≥x0 并使(面積=1或y2=y(tǒng)0或x2=x0) (36) 如果y0≠y1且x0>x1,則使y2>(y1+y0)/2且x2>(x1+x0)/2 并使(面積=1或y2=y(tǒng)1或x2=x0) (38) 應(yīng)記得,在圖3所示方法300中的步驟306處,系統(tǒng)處理器102可開(kāi)始選擇第三點(diǎn)以加入至步驟304的指令,以使所述三點(diǎn)形成三角形。在308處,方法300可開(kāi)始選擇第三點(diǎn)的座標(biāo)(x2,y2)。
在選擇第三點(diǎn)座標(biāo)(x2,y2)時(shí)可使用方程式(30)、(31)、(36)和(38)。在310處,方法300可確定是否x0=x1。如果x0=x1,則在步驟312處方法300可使x2=x0+2/(y1-y0)且y2=(y1+y0)/2。如果x0≠x1,則在步驟314處方法300可確定是否y0=y(tǒng)1。如果y0=y(tǒng)1,則在步驟316處方法300可使y2=y(tǒng)0+2/(x1-x0)且x2=(x1+x0)/2。如果y0≠y1,則方法300可進(jìn)行到步驟3 18,并得到直線500的垂直平分線的方程式。方法300也可以繼續(xù)從步驟314進(jìn)行至步驟320。
在步驟320處,y0≠y1且方法300可確定是否x0<x1。如果在步驟320處x0<x1,則在步驟322處方法300可使y2≥y0且x2≥x0。在324處,方法300進(jìn)一步可使面積=1或y2=y(tǒng)0或x2=x0。如果在步驟320處x0不小于x1,則方法300可進(jìn)行到步驟326。在326處,y0≠y1且x0>x1。在步驟328處,方法300可使y2>(y1+y0)/2且x2>(x1+x0)/2。在330處,方法300可使面積=1或y2=y(tǒng)1或x2=x0。
方法300可從步驟318、步驟324和步驟330進(jìn)行到步驟332。在步驟332處,方法300可采用在步驟318中獲得的直線方程式、以及來(lái)自324或330的合適輸入來(lái)獲得第三點(diǎn)的座標(biāo)值(x2,y2)。方法300可從步驟312、步驟316和步驟332進(jìn)行到步驟334。在步驟334處,方法300可存儲(chǔ)第三點(diǎn)的座標(biāo)值(x2,y2)。
除了從步驟306進(jìn)行到步驟308處開(kāi)始選擇第三點(diǎn)的座標(biāo)(x2,y2)以外,方法300也可從步驟306進(jìn)行到步驟336。在步驟336處,方法300可選擇第三點(diǎn)(x2,y2,K2)的屬性值K2。方法300可選擇第三點(diǎn)(x2,y2,K2)的屬性值K2,以使所選定的屬性值可對(duì)沿直線200上的像素的經(jīng)計(jì)算的屬性值幾乎沒(méi)有影響甚至毫無(wú)影響。例如,為了確定要賦給頂點(diǎn)(x2,y2)的屬性K2,可使用命令字符串(2)每一屬性的平均值以及方程式(11)。
draw_line(x0,y0,K0,x1,y1 K1) (1) draw_line(1.51,2.21,8α,240R,0G,56B,23RS,0GS,0BS,4u,256v,3.15,4.48,45α,210R,0G,7B,99RS,180GS,45BS,0u,16v)(2) K2=(K0+K1)/2 (11) 來(lái)自命令字符串(2)的漫射顏色阿爾法(“α”)平均值是26.5(=(8+45)/2)。來(lái)自命令字符串(2)的漫射顏色紅色(“R”)平均值是275(=(240+210)/2)。來(lái)自命令字符串(2)的漫射顏色綠色(“G”)平均值是0(=(0+0)/2)。通過(guò)采用來(lái)自方程式(35)的座標(biāo)并計(jì)算其余屬性,第三點(diǎn)(K2)的頂點(diǎn)命令字符串可以是 Vertex_K2(3.90,2.21,26.5α,275R,0G,31.5B,61RS,90GS,22.5BS,2u,136v) (39) 在一替代實(shí)施例中,如果在步驟302處,系統(tǒng)處理器102接收到界定三角形(x0,y0,K0)、(x1,y1,K1)、(x2′,y2′,K2′)的信息、以及要將三角形的一邊渲染成直線的請(qǐng)求,則可調(diào)節(jié)K2′屬性值以獲得K2,使K2=(K0+K1)/2。
在步驟338處,方法300可將具有從步驟336獲得的屬性K2的來(lái)自步驟334的座標(biāo)(x2,y2)結(jié)合到vertex_K2命令字符串中。命令字符串(2)和命令字符串(39)共同構(gòu)成圖7所示等腰三角形702。在步驟340處,方法300可將來(lái)自步驟304的指令與vertex_K2命令字符串相結(jié)合以構(gòu)成一等腰三角形圖元。在步驟342處,繪圖處理器114可接收等腰三角形圖元702。
圖8是繪制等腰三角形圖元702的方法800??刹捎靡贿吙蛩惴▉?lái)渲染圖7所示等腰三角形圖元702。邊框902可定位在直線500的周圍??赏ㄟ^(guò)基于直線500的起點(diǎn)502與終點(diǎn)504獲得位置(Xmin,Ymin)和(Xmax,Ymax)來(lái)定位邊框902。(Xmin,Ymin)和(Xmax,Ymax)可以是四舍五入的按比例縮放的整數(shù)(x0,y0)和(x1,y1)。在802處,方法800可獲得(Xmin,Ymin)和(Xmax,Ymax)。在804,使用(Xmin,Ymin)和(Xmax,Ymax)可將邊框902定位在直線500周圍。
圖9是三角形702的平面圖,其中邊框902定位在直線500周圍。將x與y的最小值和最大值四舍五入,并將模型空間座標(biāo)按比例縮放到屏幕空間座標(biāo),則得到位于(Xmin,Ymin)(=(15,22))904和(Xmax,Ymax)(=(32,45))906處的邊框902。
渲染圖9所示直線500本質(zhì)上是一插值處理,該插值處理可照亮直線500可經(jīng)過(guò)的那些像素。然而,將模型空間座標(biāo)值四舍五入成屏幕空間整數(shù)會(huì)引起直線以階梯狀外觀顯示(有時(shí)稱為“鋸齒狀圖形”),尤其是在低分辨率的顯示屏上,例如具有相對(duì)較少像素的蜂窩電話屏幕。因此,照亮直線500可經(jīng)過(guò)的那些像素附近的像素以提供將鋸齒狀圖形最小化的著色或融合可能是重要的。
在圖9所示的等腰三角形702中,存在屏幕空間中的x、y位置的線性函數(shù)K使得 K(x,y)=(Ak)(x)+(Bk)(y)+Ck(3) 其中 K=α,R,G,B,RS,GS,BS,u和v; (x,y)表示一個(gè)屏幕像素的屏幕空間座標(biāo);且 Ak、Bk和Ck表示線性系數(shù)??赏ㄟ^(guò)方程式(4)、(5)和(6)來(lái)獲得線性系數(shù)A、B、C,方程式(4)、(5)和(6)與三個(gè)頂點(diǎn)502、504和704相關(guān)聯(lián)。通過(guò)獲得系數(shù)A、B、C,可根據(jù)方程式(3)獲得在任何所需屏幕空間(x,y)位置處的屬性值。
根據(jù)方程式(3)直接求每一像素的每一屬性值可能需要兩個(gè)乘法器和兩個(gè)加法器,這是一個(gè)極其昂貴的解決方案。較佳地,可僅通過(guò)加法(“+”)運(yùn)算使用基于算法的邊框來(lái)渲染像素的簡(jiǎn)潔的直線500。一個(gè)基于僅采用加法運(yùn)算的算法的邊框使用邊方程式。可通過(guò)平面(仿射)函數(shù)來(lái)表示三角形的三條邊,這些平面(仿射)函數(shù)在邊的左側(cè)為負(fù),在邊的右側(cè)為正,且在邊上為零 E0(x,y)=(A0)(x)+(B0)(y)+C0(39) E1(x,y)=(A1)(x)+(B1)(y)+C1(40) E2(x,y)=(A2)(x)+(B2)(y)+C2(41) 以上三個(gè)方程式(39)、(40)和(41)需要六個(gè)乘法運(yùn)算和六個(gè)加法運(yùn)算,這是極其昂貴的。通過(guò)針對(duì)方程式(39)、(40)和(41)的每一方程式求出點(diǎn)(x+1,y)減去點(diǎn)(x,y)的值,所產(chǎn)生的方程式僅使用加法運(yùn)算。例如,對(duì)于方程式(39) E0(x+1,y)=(A0)(x)+(A0)+(B0)(y)+C0 -E0(x,y)=-(A0)(x) -(B0)(y)-C0 E0(x+1,y)-E0(x,y)=A0 (42) 類似地可獲得B0的方程式 E0(x,y+1)-E0(x,y)=B0 (43) 換句話說(shuō),一旦為像素(Xmin,Ymin)確定初始邊函數(shù)E0、E1、E2,則通過(guò)添加A0可獲得在同一水平掃描線上的右側(cè)在+x方向上的下一像素的邊函數(shù),或通過(guò)添加B0可獲得在同一垂直線之下在+y方向上的下一像素的邊函數(shù) Ei(Xmin,Ymin)=(Ai)(Xmin)+(Bi)(Ymin)+C0,其中(i=0,1,2)(44) 及 Ei(Xmin+1,Ymin)=Ei+A0,其中(i=0,1,2) (45) Ei(Xmin,Ymin+1)=Ei+B0,其中(i=0,1,2) (46) 通過(guò)附加的方程式,渲染處理也可移動(dòng)至左方或上方 Ei(Xmin-1,Ymin)=Ei-A0,其中(i=0,1,2) (47) Ei(Xmin,Ymin-1)=Ei-B0,其中(i=0,1,2) (48) 返回至方法800,在步驟806處,方法800可計(jì)算在邊框902的左上像素處的三個(gè)邊方程式的初始值。在本實(shí)例中,邊框902的左上像素是像素904??刹捎梅匠淌?44)來(lái)計(jì)算在像素904處的三個(gè)邊方程式的初始值。
在步驟808處,方法800可從邊框902的左上像素904向右移動(dòng)至下一像素908。在810處,方法800可確定像素的E0是否等于零。如果該像素的E0不等于零,則在步驟812處,方法800可移動(dòng)至右側(cè)的像素,并返回至步驟810。
應(yīng)記得,可通過(guò)在該邊上的平面(仿射)函數(shù)為零來(lái)表示三角形的E0邊。如果E0=0,則方法800已到達(dá)包含(x0,y0)的像素。如果該像素的E0等于零,則在步驟814處方法800 斷定該像素包含直線500的起點(diǎn)502(x0,y0)。在步驟816處,方法800可確定是否將該像素光柵化。
并不是所有像素都將對(duì)直線500照明。一些像素可提供著色或融合,且其他像素可提供直線500的直接表示。然而,邊框902中的大多數(shù)像素極可能不會(huì)給直線500任何照明,且從而將不會(huì)被進(jìn)行光柵化。通過(guò)跳過(guò)邊框902中的像素,可提高可渲染直線500的速度。
圖10是等腰三角形702的平面圖。應(yīng)記得,可通過(guò)平面(仿射)函數(shù)表示三角形的三條邊,該函數(shù)在邊的左側(cè)為負(fù),在邊的右側(cè)為正,且在邊上為零。在等腰三角形702之外的像素用負(fù)號(hào)“-”顯示,在相對(duì)于直線500(邊E0)處于等腰三角形702之中的像素用正號(hào)“+”顯示。在等腰三角形702的邊E0周邊上的像素用零“0”顯示。可使用方程式(39)、(40)和(41)來(lái)確定每一像素的-、+、0。
對(duì)于任何給定的水平或垂直掃描線,只有緊靠零(“0”)像素附近的負(fù)像素或正像素可給予直線500照明。同樣包括在圖10中的是邊界1002。在邊界1002之中的可能是所有潛在地可影響直線500的顯示的所有像素。在邊界1002之外的可能是所有可不影響直線500的顯示的像素。直線500的高效率的光柵化可僅對(duì)位于邊界1002之中的那些像素進(jìn)行求值來(lái)進(jìn)行光柵化。
在步驟814處定位了起點(diǎn)(x0,y0)之后,方法800可對(duì)緊靠該零(“0”)像素附近的負(fù)像素及/或正像素求值來(lái)進(jìn)行光柵化。在步驟818處,方法800可計(jì)算Ei((x0)-1,y0)的三個(gè)邊方程式的值,并可確定是否光柵化該像素。在步驟820處,方法800可計(jì)算Ei(x0,(y0)-1)的三個(gè)邊方程式的值,并確定是否光柵化該像素。在步驟822處,方法800可計(jì)算Ei((x0)+1,y0)的三個(gè)邊方程式的值,并確定是否光柵化該像素。
在步驟824處,方法800可設(shè)定水平增量值f=0及垂直增量值g=1。通過(guò)設(shè)定水平增量值f=0及垂直增量值g=1,方法800可垂直下移一個(gè)像素以對(duì)該像素求值。在步驟826處,方法800可確定是否(x0+f,y0+g)=(x1,y1)。如果(x0+f,y0+g)確實(shí)等于(x1,y1),則方法800已到達(dá)包含直線500的終點(diǎn)504的像素,并轉(zhuǎn)到步驟854。如果(x0+f,y0+g)不等于(x1,y1),則方法800尚未到達(dá)包含直線500的終點(diǎn)504的像素。
如果(x0+f,y0+g)不等于(x1,y1),則在步驟828處,方法800可確定邊方程式Ei(x0+f,y0+g)的值是負(fù)數(shù)、零、還是正數(shù)。
如果邊方程式Ei(x0+f,y0+g)的值是負(fù)數(shù),則在步驟830處,方法800可計(jì)算邊方程式Ei(x0+f,y0+g)的值,并可確定是否將該像素光柵化。在步驟832處,方法800可計(jì)算邊方程式Ei(x0+f+l,y0+g)的值,并可確定是否將該像素光柵化。在步驟834處,方法800可計(jì)算邊方程式Ei(x0+f+2,y0+g)的值,并可確定是否將該像素光柵化。
在步驟836處,設(shè)定f=f+1且g=g+1,且方法800可返回至步驟826。
如果邊方程式Ei(x0+f,y0+g)的值是零,則在步驟838處,方法800可計(jì)算邊方程式Ei(x0+f-l,y0+g)的值,并可確定是否將該像素光柵化。在步驟840處,方法800可計(jì)算邊方程式Ei(x0+f,y0+g)的值,并可確定是否將該像素光柵化。在步驟842處,方法800可計(jì)算邊方程式Ei(x0+f+l,y0+g)的值,并可確定是否將該像素光柵化。
在步驟844處,設(shè)定g=g+1,且方法800可返回步驟826。
如果邊方程式Ei(x0+f,y0+g)的值為正數(shù),則在步驟846處,方法800可計(jì)算邊方程式Ei(x0+f,y0+g)的值,并可確定是否將該像素光柵化。在步驟848處,方法800可計(jì)算邊方程式Ei(x0+f-1,y0+g)的值,并可確定是否將該像素光柵化。在步驟850處,方法800可計(jì)算邊方程式Ei(x0+f-2,y0+g)的值,并可確定是否將該像素光柵化。
在步驟852處,設(shè)定f=f-1和g=g+1,且方法800可返回至步驟826。
如果在步驟826處(x0+f,y0+g)等于(x1,y1),則光柵化處理可能已經(jīng)到達(dá)包含直線500的終點(diǎn)504的像素,且在步驟854處,方法800可斷定該像素包含直線500的終點(diǎn)504(x1,y1)。
在步驟856處,方法800可計(jì)算Ei(x1,y1)的三個(gè)邊方程式的值,并可確定是否將該像素光柵化。在步驟858處,方法800可計(jì)算Ei((x1)-1,y0)的三個(gè)邊方程式的值,并可確定是否將該像素光柵化。在步驟860處,方法800可計(jì)算Ei(x1,(y0)+1)的三個(gè)邊方程式的值,并可確定是否將該像素光柵化。在步驟862處,方法800可計(jì)算Ei((x1)+1,y0)的三個(gè)邊方程式的值,并可確定是否將該像素光柵化。
如果方法800確定不將一給定像素光柵化,則在繪圖存儲(chǔ)器112中不存儲(chǔ)該給定像素的光柵化信息。如果方法800確定要光柵化一給定像素,則可在繪圖存儲(chǔ)器112中存儲(chǔ)光柵化信息。所存儲(chǔ)的光柵化信息可包括界定直線圖形對(duì)象的二維表示的一組經(jīng)編輯的顯示點(diǎn)。在本實(shí)例中,直線圖形對(duì)象是圖7所示底邊500。
在將相關(guān)的像素完全光柵化并將位圖信息存儲(chǔ)在繪圖存儲(chǔ)器112中之后,在步驟864處方法800可將位圖信息傳遞至圖1所示的幀緩沖器116。在步驟866處,幀緩沖器116可將位圖信息傳遞至顯示屏118,其中可顯示模型空間線500的屏幕空間直線。
除上述情況以外,方法800可采用其他裝置級(jí)技術(shù)以使光柵直線段的階梯狀外觀變平滑,例如數(shù)字微分分析器(DDA)算法和Bresenahm直線算法。DDA算法和Bresenahm直線算法均是基于沿直線路徑調(diào)節(jié)像素的強(qiáng)度。
并不必測(cè)試三角形702的所有三條邊。在測(cè)試之前,已知邊E0是三角形702的底邊,且因此是所需的線條。其余兩邊是預(yù)先確定的,并從而關(guān)于三角形702的這兩個(gè)其余邊的信息是已知的。在測(cè)試邊E0時(shí),該處理實(shí)質(zhì)上僅跨過(guò)所述直線,且該處理是否跨越其余兩邊在該處理中可能幾乎不存在區(qū)別。跨越其余兩邊之一可告知該處理其已到達(dá)線條的端點(diǎn),但是邊框提供一種已做出這種決定的技術(shù)。因此,可能只需要測(cè)試邊E0來(lái)將所述線條光柵化。
圖11是可用來(lái)實(shí)施一些實(shí)施例的計(jì)算機(jī)系統(tǒng)1100。在一些實(shí)施例中,可將所揭示的技術(shù)硬編碼到專用于圖形產(chǎn)生的硬件裝置中,及/或?qū)嵤┰诖鎯?chǔ)于計(jì)算機(jī)可讀媒體(軟件)中的計(jì)算機(jī)可執(zhí)行指令中。
計(jì)算機(jī)系統(tǒng)1100可包括總線1105、處理器1110、系統(tǒng)存儲(chǔ)器1115、只讀存儲(chǔ)器1120、永久性存儲(chǔ)裝置1125、輸入裝置1130、輸出裝置1135、和替代處理器1140。
總線1105可籠統(tǒng)地表示所有系統(tǒng)總線、外圍總線及芯片組總線,其在通信上連接計(jì)算機(jī)系統(tǒng)1100的眾多內(nèi)部裝置。例如,總線1105可使處理器1110在通信上連接只讀存儲(chǔ)器1120、系統(tǒng)存儲(chǔ)器1115及永久性存儲(chǔ)裝置1125。
只讀存儲(chǔ)器(ROM)1120可存儲(chǔ)由處理器1110及計(jì)算機(jī)系統(tǒng)中其他模塊所需的靜態(tài)數(shù)據(jù)和指令。另一方面,永久性存儲(chǔ)裝置1125可以是讀寫存儲(chǔ)器裝置。此裝置是一即使在計(jì)算機(jī)系統(tǒng)1100關(guān)閉時(shí)也能存儲(chǔ)指令和數(shù)據(jù)的非易失性存儲(chǔ)器單元。某些實(shí)施例可使用一大容量存儲(chǔ)裝置(例如一磁盤或光盤及其對(duì)應(yīng)的磁盤驅(qū)動(dòng)器)作為永久性存儲(chǔ)裝置1125。其他實(shí)施例可使用一可移動(dòng)存儲(chǔ)裝置(例如軟磁盤或zip磁盤及其對(duì)應(yīng)的磁盤驅(qū)動(dòng)器)作為永久性存儲(chǔ)裝置。
如永久性存儲(chǔ)裝置1125一樣,系統(tǒng)存儲(chǔ)器1115可是一讀寫存儲(chǔ)器裝置。然而,不同于存儲(chǔ)裝置1125,系統(tǒng)存儲(chǔ)器可是一易失性讀寫存儲(chǔ)器,例如一隨機(jī)存取存儲(chǔ)器(RAM)。系統(tǒng)存儲(chǔ)器可存儲(chǔ)處理器在運(yùn)行時(shí)所需要的指令和數(shù)據(jù)。
在一些實(shí)施例中,需用來(lái)執(zhí)行本文所揭示方法的一些指令及/或數(shù)據(jù)可存儲(chǔ)在系統(tǒng)存儲(chǔ)器1115、永久性存儲(chǔ)裝置1125、只讀存儲(chǔ)器1120、或這三者的任意組合中。例如,各種存儲(chǔ)器單元可包含應(yīng)用程序的指令及/或由應(yīng)用程序產(chǎn)生的圖形數(shù)據(jù)。在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器1115及/或永久性存儲(chǔ)裝置1125可包括一緩存器及/或緩沖器。
從這些各種存儲(chǔ)器單元,處理器1110可檢索要執(zhí)行的指令以及要處理的數(shù)據(jù)以執(zhí)行本文所揭示的處理。在一些實(shí)施例中,處理器1110可使用單片高速緩存器1112來(lái)保留最近由處理器1110存取或產(chǎn)生的數(shù)據(jù)。在一些實(shí)施例中,替代處理器1140可執(zhí)行指令并處理數(shù)據(jù)以執(zhí)行本文所揭示的處理。
總線1105還可連接至輸入和輸出裝置1130和1135。輸入裝置1130可使使用者能夠傳送信息及選擇命令至計(jì)算機(jī)系統(tǒng)1100。輸入裝置1130可包括字母數(shù)字鍵盤及光標(biāo)控制器。輸出裝置1135可打印或顯示由計(jì)算機(jī)系統(tǒng)1100產(chǎn)生的圖像。輸出裝置可包括打印機(jī)和顯示裝置,例如陰極射線管(CRT)或液晶顯示器(LCD)。
最后,如圖11中所示,總線1105還可通過(guò)(例如)網(wǎng)絡(luò)適配器(未示出)將計(jì)算機(jī)系統(tǒng)1100耦連至網(wǎng)絡(luò)1165。通過(guò)這種方式,計(jì)算機(jī)系統(tǒng)1100可成為一計(jì)算機(jī)網(wǎng)絡(luò)(例如局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”)、或內(nèi)部網(wǎng))或一由眾多網(wǎng)絡(luò)形成的網(wǎng)絡(luò)(例如互聯(lián)網(wǎng))的一部分??墒褂糜?jì)算機(jī)系統(tǒng)1100的任何或所有組件。然而,所屬技術(shù)領(lǐng)域中的技術(shù)人員將了解,還可使用任何其他系統(tǒng)配置。
使用現(xiàn)有的3D圖形加速器路由會(huì)將產(chǎn)生一線條所需的功率最小化。在低功率資源系統(tǒng)(例如蜂窩電話和手表)中這尤為重要。
盡管已參照眾多的具體細(xì)節(jié)進(jìn)行了詳細(xì)說(shuō)明,但是所屬技術(shù)領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,所述細(xì)節(jié)可采用其他具體形式來(lái)實(shí)施,而此并不違背本發(fā)明的精神。因此,所屬技術(shù)領(lǐng)域中的一般技術(shù)人員將了解,所揭示的細(xì)節(jié)不受前述例示細(xì)節(jié)的約束,而是受隨附權(quán)利要求書的界定。
所屬技術(shù)領(lǐng)域中的技術(shù)人員將了解,可使用各種不同技術(shù)及技法中的任一種來(lái)表示信息及信號(hào)。舉例而言,整個(gè)上述說(shuō)明中可能提及的數(shù)據(jù)、指令、命令、信息、信號(hào)、位、符號(hào)和芯片可由電壓、電流、電磁波、磁場(chǎng)或粒子、光場(chǎng)或粒子、或其任一組合來(lái)表示。
所屬技術(shù)領(lǐng)域中的技術(shù)人員將進(jìn)一步了解,結(jié)合本文所揭示實(shí)施例而闡述的各種例示性邏輯塊、模塊、電路、及算法步驟可構(gòu)建為電子硬件、計(jì)算機(jī)軟件、或二者的組合。為例示硬件和軟件的此種可互換性,上文就其功能總體闡釋了各種例示性組件、塊、模塊、電路及步驟。此種功能實(shí)施作為硬件還是軟件取決于特定應(yīng)用及施加于整個(gè)系統(tǒng)的設(shè)計(jì)制約條件。所屬技術(shù)領(lǐng)域的技術(shù)人員可針對(duì)每一特定應(yīng)用以不同方式構(gòu)建上述功能,但是,此等構(gòu)建決不應(yīng)被解釋為背離本發(fā)明的范圍。此外,在不背離本發(fā)明范圍的情況下可互換各方法步驟。
結(jié)合本文所揭示實(shí)施例加以闡釋的各例示性邏輯塊、模塊及電路均可由下列裝置構(gòu)建或?qū)嵤┩ㄓ锰幚砥鳌?shù)字信號(hào)處理器(DSP)、應(yīng)用專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)或其它可編程邏輯裝置、分立門或晶體管邏輯、分立硬件組件、或設(shè)計(jì)用于實(shí)施本文所述各功能的其任何組合。通用處理器可為微處理器,但另一選擇為,處理器可為任何傳統(tǒng)處理器、控制器、微控制器或狀態(tài)機(jī)。處理器還可作為計(jì)算裝置的一組合形式實(shí)施,例如DSP與微處理器的組合,多個(gè)微處理器,一個(gè)或多個(gè)微處理器結(jié)合DSP核心的組合,或任何其它此種配置。
結(jié)合本文所揭示實(shí)施例所述的方法或算法的步驟可直接實(shí)施于硬件中、實(shí)施于由一處理器執(zhí)行的軟件模塊中、或?qū)嵤┯趦烧叩慕M合中。軟件模塊可駐留于RAM存儲(chǔ)器、閃速存儲(chǔ)器、ROM存儲(chǔ)器、EPROM存儲(chǔ)器、EEPROM存儲(chǔ)器、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM、或所屬技術(shù)領(lǐng)域中已知的任何其它形式的存儲(chǔ)媒體中。實(shí)例性存儲(chǔ)媒體耦連至處理器,以使所述處理器可自所述存儲(chǔ)媒體讀取信息且能夠?qū)⑿畔懼了龃鎯?chǔ)媒體?;蛘?,所述存儲(chǔ)媒體可集成到所述處理器中。所述處理器及所述存儲(chǔ)媒體可駐留在ASIC中。所述ASIC則可駐留于一用戶終端機(jī)中。另一選擇為,所述處理器及所述存儲(chǔ)媒體可作為分立組件駐留在用戶終端機(jī)中。
提供上述所揭示實(shí)施例的說(shuō)明意在使所屬技術(shù)領(lǐng)域中的任何技術(shù)人員都能夠制作或使用本發(fā)明。所屬技術(shù)領(lǐng)域中的技術(shù)人員將容易得知對(duì)這些實(shí)施例的各種修改,且本文所界定的一般原理可應(yīng)用于其它實(shí)施例,此并不背離本發(fā)明的精神或范圍。因此,本發(fā)明并非旨在限定于本文所示的實(shí)施例,而是要賦予其與本文所揭示的原理及新穎特征相一致的最寬廣范圍。
權(quán)利要求
1.一種計(jì)算機(jī)可讀媒體,其包含用于編輯一組顯示點(diǎn)的方法,所述一組顯示點(diǎn)使用三維光柵化算法來(lái)界定直線圖形對(duì)象的二維表示,所述方法包括
接收界定三角形圖元的三個(gè)頂點(diǎn)(x0,y0,K0)、(x1,y1,K1)、及(x2,y2,K2)的數(shù)據(jù),其中屬性K2=(K0+K1)/2,其中座標(biāo)(x0,y0)、(x1,y1)、及(x2,y2)形成一等腰三角形圖元,且其中座標(biāo)(x0,y0)和(x1,y1)界定所述等腰三角形圖元的底邊;及
使用三維光柵化算法來(lái)渲染所述等腰三角形圖元,以獲得界定所述等腰三角形圖元的底邊的二維表示的所述一組顯示點(diǎn)。
2.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒體,其進(jìn)一步包括
接收界定直線的數(shù)據(jù),其中所述數(shù)據(jù)包括具有座標(biāo)(x0,y0)和屬性K0的起點(diǎn)和具有座標(biāo)(x1,y1)和屬性K1的終點(diǎn);
為具有座標(biāo)(x2,y2)的第三點(diǎn)選擇屬性K2,其中K2=(K0+K1)/2;及
為所述第三點(diǎn)選擇所述座標(biāo)(x2,y2)以形成所述等腰三角形圖元。
3.如權(quán)利要求2所述的計(jì)算機(jī)可讀媒體,其中如果y0≠y1,則為所述第三點(diǎn)選擇所述座標(biāo)(x2,y2)包括獲得所述底邊的垂直平分線的方程式。
4.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒體,其中如果x0=x1,則x2和y2定義為x2=x0+2/(y1-y0)和y2=(y1+y0)/2。
5.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒體,其中如果y0=y(tǒng)1,則x2和y2定義為y2=y(tǒng)0+2/(x1-x0)和x2=(x1+x0)/2。
6.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒體,其中所述等腰三角形圖元界定一面積,且如果y0≠y1且x0<x1,則x2和y2定義為y2≥y0和x2≥x0,且所述面積、x2、及y2中的一者由所述面積=1、y2=y(tǒng)0、及x2=x0中的一者來(lái)定義。
7.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒體,其中所述等腰三角形圖元界定一面積,且如果y0≠y1且x0>x1,則x2和y2定義為y2>(y1+y0)/2且x2>(x1+x0)/2,且所述面積、x2、及y2中的一者由所述面積=1、y2=y(tǒng)1、及x2=x0中的一者來(lái)定義。
8.如權(quán)利要求1所述的計(jì)算機(jī)可讀媒體,其中渲染所述等腰三角形圖元包括定位包含所述起點(diǎn)(x0,y0)的像素,
設(shè)定水平增量值f=0及垂直增量值g=1,及
確定是否(x0+f,y0+g)=(x1,y1)。
9.如權(quán)利要求8所述的計(jì)算機(jī)可讀媒體,其中如果(x0+f,y0+g)≠(x1,y1),則渲染所述等腰三角形圖元進(jìn)一步包括為E0=0的那一像素、為位于緊靠所述E0=0的像素左側(cè)的像素、以及為位于緊靠所述E0=0像素右側(cè)的像素計(jì)算邊方程式E0的值。
10.如權(quán)利要求9所述的計(jì)算機(jī)可讀媒體,其中渲染所述等腰三角形圖元進(jìn)一步包括確定是否要將所述E0=0的像素、位于緊靠所述E0=0的像素左側(cè)的所述像素、以及位于緊靠所述E0=0像素右側(cè)的所述像素光柵化。
11.一種用于編輯一組顯示點(diǎn)的裝置,所述一組顯示點(diǎn)使用三維光柵化算法來(lái)界定直線圖形對(duì)象的二維表示,所述裝置包括
三維圖形加速器,其具有繪圖存儲(chǔ)器,所述繪圖存儲(chǔ)器經(jīng)配置以接收界定三角形圖元的三個(gè)頂點(diǎn)(x0,y0,K0)、(x1,y1,K1)及(x2,y2,K2)的數(shù)據(jù),其中屬性K2=(K0+K1)/2,其中座標(biāo)(x0,y0)、(x1,y1)及(x2,y2)形成一等腰三角形圖元,且其中座標(biāo)(x0,y0)和(x1,y1)界定所述等腰三角形圖元的底邊,及
所述三維圖形加速器進(jìn)一步具有繪圖處理器,所述繪圖處理器經(jīng)配置以使用三維光柵化算法來(lái)渲染所述等腰三角形圖元,以獲得界定所述等腰三角形圖元的底邊的二維表示的所述一組顯示點(diǎn)。
12.如權(quán)利要求11所述的裝置,其進(jìn)一步包含
系統(tǒng)處理器,其經(jīng)配置以接收界定直線的數(shù)據(jù),其中所述數(shù)據(jù)包括具有座標(biāo)(x0,y0)和屬性K0的起點(diǎn)和具有座標(biāo)(x1,y1)和屬性K1的終點(diǎn);為具有座標(biāo)(x2,y2)的第三點(diǎn)選擇屬性K2,其中K2=(K0+K1)/2;及為所述第三點(diǎn)選擇所述座標(biāo)(x2,y2)以形成所述等腰三角形圖元。
13.如權(quán)利要求12所述的裝置,其進(jìn)一步包括顯示裝置,其經(jīng)配置以將所述底邊作為直線圖形對(duì)象來(lái)顯示。
14.如權(quán)利要求11所述的裝置,其中如果x0=x1,則x2和y2定義為x2=x0+2/(y1-y0)和y2=(y1+y0)/2。
15.如權(quán)利要求11所述的裝置,其中如果y0=y(tǒng)1,則x2和y2定義為y2=y(tǒng)0+2/(x1-x0)和x2=(x1+x0)/2。
16.如權(quán)利要求11所述的裝置,其中所述等腰三角形圖元界定一面積,且如果y0≠y1且x0<x1,則x2和y2定義為y2≥y0和x2≥x0,且所述面積、x2、和y2中的一者由所述面積=1、y2=y(tǒng)0及x2=x0中的一者來(lái)定義。
17.如權(quán)利要求11所述的裝置,其中所述等腰三角形圖元界定一面積,且如果y0≠y1且x0>x1,則x2和y2定義為y2>(y1+y0)/2和x2>(x1+x0)/2,且所述面積、x2、及y2中的一者由所述面積=1、y2=y(tǒng)1、及x2=x0中的一者來(lái)定義。
18.一種用于編輯一組顯示點(diǎn)的裝置,所述一組顯示點(diǎn)使用三維光柵化算法來(lái)界定直線圖形對(duì)象的二維表示,所述裝置包括
接收裝置,其用于接收界定三角形圖元的三個(gè)頂點(diǎn)(x0,y0,K0)、(x1,y1,K1)及(x2,y2,K2)的數(shù)據(jù),其中屬性K2=(K0+K1)/2,其中座標(biāo)(x0,y0)、(x1,y1)及(x2,y2)形成一等腰三角形圖元,且其中座標(biāo)(x0,y0)和(x1,y1)界定所述等腰三角形圖元的底邊,及
渲染裝置,其用于使用三維光柵化算法來(lái)渲染所述等腰三角形圖元,以獲得界定所述等腰三角形圖元的底邊的二維表示的所述一組顯示點(diǎn)。
19.如權(quán)利要求18所述的裝置,其進(jìn)一步包括
系統(tǒng)處理器,其經(jīng)配置以接收界定直線的數(shù)據(jù),其中所述數(shù)據(jù)包括具有座標(biāo)(x0,y0)和屬性K0的起點(diǎn)和具有座標(biāo)(x1,y1)和屬性K1的終點(diǎn);為具有座標(biāo)(x2,y2)的第三點(diǎn)選擇屬性K2,其中K2=(K0+K1)/2;及為所述第三點(diǎn)選擇所述座標(biāo)(x2,y2)以形成所述等腰三角形圖元。
20.如權(quán)利要求18所述的裝置,其中所述接收裝置是繪圖存儲(chǔ)器。
21.如權(quán)利要求18所述的裝置,其中所述渲染裝置是繪圖處理器。
22.如權(quán)利要求11所述的裝置,其中
(i) 如果x0=x1,則x2和y2定義為x2=x0+2/(y1-y0)和y2=(y1+y0)/2,
(ii)如果y0=y(tǒng)1,則x2和y2定義為y2=y(tǒng)0+2/(x1-x0)和x2=(x1+x0)/2,
(iii)如果y0≠y1且x0<x1,則所述等腰三角形圖元界定一面積且x2和y2定義為y2≥y0和x2≥x0,且所述面積、x2、和y2中的一者由所述面積=1、y2=y(tǒng)0、及x2=x0中的一者來(lái)定義,及
(iv)如果y0≠y1且x0>x1,則所述等腰三角形圖元界定一面積且x2和y2定義為y2>(y1+y0)/2和x2>(x1+x0)/2,且所述面積、x2、及y2中的一者由所述面積=1、y2=y(tǒng)1、及x2=x0中的一者來(lái)定義。
23.一種用于編輯一組顯示點(diǎn)的方法,所述一組顯示點(diǎn)使用三維光柵化算法來(lái)界定直線圖形對(duì)象的二維表示,所述方法包括
接收界定三角形圖元的三個(gè)頂點(diǎn)(x0,y0,K0)、(x1,y1,K1)、及(x2,y2,K2)時(shí)數(shù)據(jù),其中屬性K2=(K0+K1)/2,其中座標(biāo)(x0,y0)、(x1,y1)、及(x2,y2)形成一等腰三角形圖元,且其中座標(biāo)(x0,y0)和(x1,y1)界定所述等腰三角形圖元的底邊;及
使用三維光柵化算法來(lái)渲染所述等腰三角形圖元,以獲得界定所述等腰三角形圖元的底邊的二維表示的所述一組顯示點(diǎn)。
24.如權(quán)利要求1所述的方法,其進(jìn)一步包括
接收界定直線的數(shù)據(jù),其中所述數(shù)據(jù)包括具有座標(biāo)(x0,y1)和屬性K0的起點(diǎn)和具有座標(biāo)(x1,y1)和屬性K1的終點(diǎn);
為具有座標(biāo)(x2,y2)的第三點(diǎn)選擇屬性K2,其中K2=(K0+K1)/2;及
為所述第三點(diǎn)選擇所述座標(biāo)(x2,y2),以形成所述等腰三角形圖元,
其中如果y0≠y1,則為所述第三點(diǎn)選擇所述座標(biāo)(x2,y2)包括獲得所述底邊的垂直平分線的方程式。
25.如權(quán)利要求23所述的方法,其中如果x0=x1,則x2和y2定義為x2=x0+2/(y1-y0)和y2=(y1+y0)/2。
26.如權(quán)利要求1所述的方法,其中
(i) 如果x0=x1,則x2和y2定義為x2=x0+2/(y1-y0)和y2=(y1+y0)/2,
(ii)如果y0=y(tǒng)1,則x2和y2定義為y2=y(tǒng)0+2/(x1-x0)和x2=(x1+x0)/2,
(iii)如果y0≠y1且x0<x1,則所述等腰三角形圖元界定一面積,且x2和y2定義為y2≥y0和x2≥x0,且所述面積、x2、和y2中的一者由所述面積=1、y2=y(tǒng)0、及x2=x0中的一者來(lái)定義,及
(iv)如果y0≠y1且x0>x1,則所述等腰三角形圖元界定一面積,且x2和y2定義為y2>(y1+y0)/2和x2>(x1+x0)/2,且所述面積、x2、及y2中的一者由所述面積=1、y2=y(tǒng)1、及x2=x0中的一者來(lái)定義。
全文摘要
本發(fā)明揭示一種編輯一組顯示點(diǎn)的系統(tǒng)和方法,所述一組顯示點(diǎn)使用三維光柵化算法來(lái)界定直線圖形對(duì)象的二維表示。在一實(shí)施例中,三維(3D)圖形加速器可接收數(shù)據(jù)。所述數(shù)據(jù)可界定三角形圖元的三個(gè)頂點(diǎn)(x0,y0,K0)、(x1,y1,K1)、及(x2,y2,K2)。屬性K2=(K0+K1)/2和坐標(biāo)(x0,y0),(x1,y1)、及(x2,y2)形成一等腰三角形圖元。坐標(biāo)(x0,y0)和(x1,y1)界定所述等腰三角形圖元的底邊??墒褂盟鋈S光柵化算法來(lái)渲染所述等腰三角形圖元,以獲得一組界定所述等腰三角形圖元的底邊的二維表示的顯示點(diǎn)。
文檔編號(hào)G06T11/20GK101116111SQ200580047959
公開(kāi)日2008年1月30日 申請(qǐng)日期2005年12月20日 優(yōu)先權(quán)日2004年12月21日
發(fā)明者邁克爾·休·安德森 申請(qǐng)人:高通股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
邵阳市| 顺义区| 四川省| 江门市| 顺平县| 平湖市| 鄂尔多斯市| 阜南县| 砀山县| 潍坊市| 千阳县| 原平市| 上杭县| 庆城县| 六安市| 高安市| 定陶县| 旺苍县| 田林县| 封丘县| 榆树市| 四子王旗| 微山县| 平阴县| 陇南市| 虞城县| 堆龙德庆县| 平顺县| 年辖:市辖区| 璧山县| 油尖旺区| 禄丰县| 澄江县| 探索| 宁波市| 茌平县| 黄浦区| 内丘县| 江口县| 铜陵市| 台南市|