專利名稱:使用三維圖形硬件的二維圖形渲染期間的頂點(diǎn)丟棄的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算裝置,且特定來說涉及計(jì)算裝置進(jìn)行的圖形渲染。
背景技術(shù):
計(jì)算裝置常常要求將二維QD)曲線渲染到顯示器。計(jì)算裝置可能要求渲染2D曲線以用于將文檔渲染(例如)到便攜式文檔格式(PDF)。計(jì)算裝置還可能要求渲染2D曲線以用于各種幾何形狀(例如,圓形、橢圓形、具有圓角的矩形等)的不依賴于分辨率的表示。 此些形狀在用戶接口菜單和網(wǎng)站中較普及。2D形狀經(jīng)由參數(shù)曲線的渲染可用于例如Adobe Flash 和 Microsoft Silverlight 等網(wǎng)頁動畫格式。由于例如用于視頻游戲、角色動畫等的三維(3D)圖形中對圖形的要求不斷增加, 計(jì)算裝置常常包含專用的3D圖形硬件。然而常規(guī)的3D圖形硬件并不為渲染2D曲線提供直接支持。由此,計(jì)算裝置可包含用于渲染2D和3D曲線的單獨(dú)圖形硬件。必須維持單獨(dú)的圖形硬件這一要求在硅面積和功耗兩方面成本較高。在例如個人數(shù)字助理(PDA)、無線通信裝置、全球定位裝置等移動計(jì)算裝置的情況下,增加的面積或功耗是不合意的,因?yàn)槠鋵?dǎo)致裝置的大小較大、電池壽命減少等。
發(fā)明內(nèi)容
本發(fā)明描述用于使用3D圖形硬件來渲染2D曲線的技術(shù)。根據(jù)所描述的技術(shù),計(jì)算裝置可在使用3D圖形硬件的2D圖形渲染期間移除一個或一個以上頂點(diǎn)。作為一個實(shí)例, 作為專用于執(zhí)行圖形渲染操作以在顯示器上顯示計(jì)算機(jī)化圖形的圖形處理單元(GPU)可移除重復(fù)(或冗余)的頂點(diǎn)。重復(fù)或冗余的頂點(diǎn)是在顯示器坐標(biāo)空間中具有大體上相同位置坐標(biāo)的頂點(diǎn)。舉例來說,如果兩個頂點(diǎn)在彼此的像素的1/8內(nèi),即其坐標(biāo)相差少于0. 125, 那么所述兩個頂點(diǎn)可被視為重復(fù)或冗余的頂點(diǎn)。為了從圖形管線移除冗余頂點(diǎn),GPU可將每一頂點(diǎn)的位置坐標(biāo)中的每一者與先前頂點(diǎn)的位置坐標(biāo)進(jìn)行比較,且丟棄在顯示器坐標(biāo)空間中具有與先前頂點(diǎn)大體上相同的位置坐標(biāo)的頂點(diǎn)?;蛘呋蛄硗?,GPU可選擇性地移除位于直線上的一個或一個以上頂點(diǎn)。此情形可 (例如)在曲線的由三個或三個以上頂點(diǎn)表示的部分具有極少或無曲率時發(fā)生。在此情況下,曲線的直部分可使用從第一頂點(diǎn)(例如,端點(diǎn))到最后頂點(diǎn)(端點(diǎn))的直線而不是從第一頂點(diǎn)到最后頂點(diǎn)的一系列直線線段來同樣好地表示。為了移除曲線的具有極少或無曲率的部分的第一頂點(diǎn)與最后頂點(diǎn)之間的所述一個或一個以上頂點(diǎn),GPU可比較所述系列的線段的斜率。GPU可在斜率大體上相同(例如,在可容許閾值內(nèi))時移除曲線的具有極少或無曲率的部分的第一頂點(diǎn)與最后頂點(diǎn)之間的一個或一個以上中間頂點(diǎn)。移除冗余頂點(diǎn)或位于直線上的頂點(diǎn)可允許較高效地利用為3D或其它較高維度而設(shè)計(jì)的GPU的硬件資源,且增加 GPU渲染圖像以供顯示的速度。在一個方面中,一種方法包括確定位于待渲染的曲線上的多個頂點(diǎn)中的每一者的位置坐標(biāo);分析所述多個頂點(diǎn)中的至少一部分的位置坐標(biāo);以及基于所述分析而丟棄所述多個頂點(diǎn)中的至少一者。在另一方面中,一種裝置包括處理單元,所述處理單元確定位于待渲染的曲線上的多個頂點(diǎn)中的每一者的位置坐標(biāo);分析所述多個頂點(diǎn)中的至少一部分的位置坐標(biāo);以及基于所述分析而丟棄所述多個頂點(diǎn)中的至少一者。在另一方面中,一種裝置包括用于確定位于待渲染的曲線上的多個頂點(diǎn)中的每一者的位置坐標(biāo)的裝置;用于分析所述多個頂點(diǎn)中的至少一部分的位置坐標(biāo)的裝置;以及用于基于所述分析而丟棄所述多個頂點(diǎn)中的至少一者的裝置。本發(fā)明中所描述的技術(shù)可以硬件、軟件、固件或其任一組合來實(shí)施。如果以軟件實(shí)施,那么軟件可在處理器中執(zhí)行,所述處理器可指代一個或一個以上處理器,例如微處理器、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)或數(shù)字信號處理器(DSP)或其它等效集成或離散邏輯電路。包括執(zhí)行所述技術(shù)的指令的軟件最初可存儲在計(jì)算機(jī)可讀媒體中, 且由處理器加載和執(zhí)行。因此,本發(fā)明還預(yù)期包含指令的計(jì)算機(jī)可讀媒體,所述指令用以致使處理器執(zhí)行如本發(fā)明中所描述的多種技術(shù)中的任一者。舉例來說,在一些方面中,本發(fā)明提供一種計(jì)算機(jī)可讀媒體,其包括指令,所述指令在被執(zhí)行時致使至少一個處理器確定位于待渲染的曲線上的多個頂點(diǎn)中的每一者的位置坐標(biāo);分析所述多個頂點(diǎn)中的至少一部分的位置坐標(biāo);以及基于所述分析而丟棄所述多個頂點(diǎn)中的至少一者。附圖和以下描述中陳述本發(fā)明中所描述的技術(shù)的一個或一個以上方面的細(xì)節(jié)。從描述和圖式,且從權(quán)利要求書將明白所述技術(shù)的其它特征、目標(biāo)和優(yōu)點(diǎn)。
圖1是說明根據(jù)本發(fā)明中所描述的技術(shù)來執(zhí)行鑲嵌的實(shí)例計(jì)算裝置的框圖。圖2是進(jìn)一步詳細(xì)說明圖形處理單元的框圖。圖3是根據(jù)本發(fā)明技術(shù)的丟棄一個或一個以上頂點(diǎn)的實(shí)例性頂點(diǎn)著色器的框圖。圖4是根據(jù)本發(fā)明一個方面的輸出多個頂點(diǎn)的實(shí)例性頂點(diǎn)著色器的框圖。圖5是說明丟棄顯示器坐標(biāo)空間中的重復(fù)頂點(diǎn)的頂點(diǎn)著色器的實(shí)例性操作的流程圖。圖6是說明丟棄顯示器坐標(biāo)空間中位于直線上的至少一些頂點(diǎn)的頂點(diǎn)著色器的實(shí)例性操作的流程圖。
具體實(shí)施例方式圖1是說明根據(jù)本發(fā)明中所描述的技術(shù)執(zhí)行鑲嵌的實(shí)例計(jì)算裝置2的框圖。計(jì)算裝置2可包括輸出圖形信息的任何有線或無線裝置。舉例來說,計(jì)算裝置2可包括個人計(jì)算機(jī)、桌上型計(jì)算機(jī)、膝上型計(jì)算機(jī)、計(jì)算機(jī)工作站、視頻游戲平臺或控制臺、蜂窩式或衛(wèi)星電話、因特網(wǎng)電話、例如便攜式視頻游戲裝置或個人數(shù)字助理(PDA)等手持式裝置、個人音樂播放器、視頻播放器、電視機(jī)或另一類型的輸出圖形信息的裝置。如圖1的實(shí)例中所說明,計(jì)算裝置2包含用戶輸入接口 4、CPU 6、裝置存儲器8、 GPU 10、GPU存儲器12、顯示器接口 14和顯示器16。用戶輸入接口 4、CPU 6、裝置存儲器8、 GPU 10和顯示器接口 14可使用總線18來通信??偩€18可為多種總線結(jié)構(gòu)中的任一者,例如第三代總線(例如,HyperTransport (超輸送)總線或InfiniBand (無限頻帶)總線)、 第二代總線(例如,高級圖形端口總線、外圍組件互連(PCI)快速總線或高級可擴(kuò)展接口 (AXI)總線)或另一類型的總線或裝置互連。CPU 6可包括控制計(jì)算裝置2的操作的通用或?qū)S锰幚砥?。用戶可向?jì)算裝置2 提供輸入以致使CPU 6執(zhí)行一個或一個以上軟件應(yīng)用程序。在CPU 6上執(zhí)行的軟件應(yīng)用程序可包含文字處理器應(yīng)用程序、電子數(shù)據(jù)表應(yīng)用程序、媒體播放器應(yīng)用程序、視頻游戲應(yīng)用程序、圖形用戶接口應(yīng)用程序或另一最終用戶程序。用戶可經(jīng)由通過用戶輸入接口 4耦合到計(jì)算裝置2的例如鍵盤、鼠標(biāo)、麥克風(fēng)、觸摸板或另一輸入裝置等一個或一個以上輸入裝置(未圖示)向計(jì)算裝置2提供輸入。裝置存儲器8可存儲可在啟動或復(fù)位時使用以配置計(jì)算裝置2的裝置配置信息。 裝置存儲器還可存儲可由CPU 6立即存取和/或當(dāng)前正由CPU 6操作的數(shù)據(jù)和/或程序模塊。裝置存儲器8可另外存儲來自計(jì)算裝置2的其它組件的信息,例如由GPU 10輸出的信息。裝置存儲器8可為一個或一個以上易失性或非易失性存儲器或存儲裝置,例如隨機(jī)存取存儲器(RAM)、靜態(tài)RAM (SRAM)、動態(tài)RAM (DRAM)、只讀存儲器(ROM)、可擦除可編程 ROM(EPROM)、電可擦除可編程ROM(EEPROM)、快閃存儲器、磁性數(shù)據(jù)媒體或光學(xué)存儲媒體。GPU 10可專用于執(zhí)行圖形操作以在顯示器16上渲染計(jì)算機(jī)化圖形。因此,當(dāng)在 CPU 6上執(zhí)行的軟件應(yīng)用程序中的一者需要圖形處理時,CPU 6將圖形信息提供給GPU 10 以用于渲染到顯示器16。在一些實(shí)例中,GPU 10可以并行結(jié)構(gòu)來建置,其提供比CPU 6更高效的對復(fù)雜圖形相關(guān)操作的處理。舉例來說,GPU 10可包含多個圖形管線,其以完全并行方式對多個頂點(diǎn)進(jìn)行操作。在一些實(shí)例中,GPU 10的高度并行特征可允許GPU 10比通過 CPU 6向顯示器16直接繪制圖形更快地在顯示器16上創(chuàng)建復(fù)雜的2D或3D圖像。在一些實(shí)例中,GPU 10可經(jīng)設(shè)計(jì)以將3D圖形渲染到顯示器16。然而GPU 10可用以執(zhí)行對2D曲線的硬件加速的渲染。本發(fā)明的技術(shù)可用以改進(jìn)使用3D圖形硬件(例如,GPU 10)來渲染 2D曲線的效率。在一些實(shí)例中,GPU 10可集成到計(jì)算裝置2的母板(未圖示)中。在其它實(shí)例中, GPU 10可存在于安裝在計(jì)算裝置2的母板中的端口中的圖形卡上,或可以其它方式并入經(jīng)配置以與計(jì)算裝置2互操作的外圍裝置內(nèi)。GPU 10可為一個或一個以上處理器,例如一個或一個以上微處理器、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、數(shù)字信號處理器 (DSP)或其它等效集成或離散邏輯電路。GPU 10可直接耦合到GPU存儲器12。因此,GPU 10可在不使用總線18的情況下從GPU存儲器12讀取數(shù)據(jù)和向GPU存儲器12寫入數(shù)據(jù)。換句話說,GPU 10可使用本地存儲裝置而不是芯片外存儲器來本地處理數(shù)據(jù)。這通過消除GPU 10經(jīng)由總線18讀取和寫入數(shù)據(jù)(可能經(jīng)歷繁重的總線業(yè)務(wù))的需要而允許GPU 10以更高效的方式操作。然而,在一些實(shí)例中,GPU 10可不包含單獨(dú)的存儲器,而是經(jīng)由總線18利用裝置存儲器8。GPU存儲器12可為一個或一個以上易失性或非易失性存儲器或存儲裝置,例如RAM、SRAM、DRAM、 EPR0M、EEPR0M、快閃存儲器、磁性數(shù)據(jù)媒體或光學(xué)存儲媒體。CPU 6和/或GPU 10可將圖形信息提供給顯示器接口 14以用于經(jīng)由顯示器16呈現(xiàn)。在復(fù)雜的2D和3D圖形的情況下,圖形信息通常由GPU 10為顯示器16產(chǎn)生。顯示器16 可包括監(jiān)視器、電視機(jī)、投影裝置、液晶顯示器(LCD)、等離子顯示面板、發(fā)光二極管(LED)陣列、陰極射線管顯示器、電子紙、表面?zhèn)鲗?dǎo)電子發(fā)射顯示器(SED)、激光電視機(jī)顯示器、納米晶體顯示器或另一類型的顯示單元。顯示器16可集成在計(jì)算裝置2內(nèi)。舉例來說,顯示器16可為移動電話或其它無線通信裝置的屏幕?;蛘?,顯示器16可為經(jīng)由有線或無線通信鏈路耦合到計(jì)算機(jī)裝置2的獨(dú)立裝置。舉例來說,顯示器16可為經(jīng)由電纜或無線鏈路連接到個人計(jì)算機(jī)的計(jì)算機(jī)監(jiān)視器或平板顯示器。當(dāng)在CPU 6上執(zhí)行的軟件應(yīng)用程序中的一者期望呈現(xiàn)復(fù)雜的2D圖形圖像時,CPU 6和GPU 10可一起操作以將圖形渲染到顯示器16。舉例來說,在文字處理應(yīng)用程序的情況下,軟件應(yīng)用程序可能期望將參數(shù)曲線渲染到文檔,例如PDF文檔。作為另一實(shí)例,軟件應(yīng)用程序可為用于例如根據(jù)可縮放向量圖形(SVG)標(biāo)準(zhǔn)使用各種幾何形狀來在顯示器16上呈現(xiàn)用戶接口的軟件應(yīng)用程序。在又一實(shí)例中,軟件應(yīng)用程序可能期望經(jīng)由用于例如Adobe Flash和Microsoft Silverlight (微軟銀光)等網(wǎng)頁動畫格式的參數(shù)曲線來渲染2D形狀。 軟件應(yīng)用程序包含界定形成待顯示的圖形圖像的一個或一個以上2D曲線的命令。舉例來說,在PDF文檔的情況下,應(yīng)用程序可包含界定各種字母和/或數(shù)字的圖形圖像的曲線的命令。在用戶接口的情況下,應(yīng)用程序可包含界定圓形、橢圓形、具有圓角的矩形等的圖形圖像的曲線的命令。舉例來說,所述命令可界定若干曲線,所述曲線界定圖形圖像的邊界。換句話說,由命令界定的曲線可近似表示字母、數(shù)字或形狀的曲率。在一個實(shí)例中,軟件應(yīng)用程序可包含根據(jù)如2005年7月28日的文獻(xiàn)“開放式VG 規(guī)范,1.0版”中界定的開放式VG來界定多個路徑(即,曲線)的命令。開放式VG界定允許使用一個或一個以上線段命令來指定2D形式的圖形圖像的一組命令。根據(jù)開放式VG規(guī)范,線段命令可界定直線線段、貝塞爾(Bezier)曲線線段或橢圓弧線段。開放式VG的擴(kuò)展可指定其它類型的線段。因此,本發(fā)明的技術(shù)不限于開放式VG規(guī)范中當(dāng)前界定的線段命令。而且,雖然在開放式VG的上下文中描述本發(fā)明的技術(shù),但所述技術(shù)可在其它2D圖形授權(quán)標(biāo)準(zhǔn)(例如 SVG、Adobe Illustrator>CorelDRAff>Adobe Flash^Microsoft Silverlight 或使用2D圖形的任一其它圖形操作標(biāo)準(zhǔn))的上下文中使用。如上文可針對渲染3D圖像設(shè)計(jì)而描述,為了使用GPU 10將2D曲線渲染到顯示器16,CPU 6可向GPU 10提供與曲線相關(guān)聯(lián)的一個或一個以上頂點(diǎn)。特定來說,CPU 6可計(jì)算表示曲線的控制點(diǎn)的一個或一個以上頂點(diǎn)。所述頂點(diǎn)中的每一者可由若干頂點(diǎn)屬性表示,其可包含表示曲線上的頂點(diǎn)在對象空間中的位置的位置坐標(biāo)(例如,2D曲線的(X,y) 坐標(biāo))。CPU 6可(例如)使用對應(yīng)于特定命令段的數(shù)學(xué)表示來產(chǎn)生所述一個或一個以上頂點(diǎn),所述特定命令段可在圖形授權(quán)規(guī)范(例如,開放式VG)中指定。除了控制點(diǎn)外,CPU 6 還可向GPU 10指示待渲染的曲線的類型,例如在開放式VG情況下的直線線段、貝塞爾曲線線段或橢圓弧線段,以及在一些情況下的索引號。CPU 6可使用產(chǎn)生的頂點(diǎn)作為圖元的頂點(diǎn)的至少一部分來產(chǎn)生繪制圖元列表。CPU 6可產(chǎn)生若干繪制圖元中的任一者,所述圖元包含點(diǎn)、線條、線環(huán)、單獨(dú)的線、三角形條、三角形扇、單獨(dú)的三角形、四邊形條、單獨(dú)的四邊形或其它類型的多邊形。CPU 6可將繪制圖元列表存儲在裝置存儲器8中。CPU 6可將繪制圖元列表作為一系列頂點(diǎn)或界定頂點(diǎn)的特性的屬性傳送到GPU 10。舉例來說,CPU 6可經(jīng)由GPU驅(qū)動器調(diào)用圖形應(yīng)用編程接口(API)以將繪制圖元列表傳送到GPU 10。圖形API可包括提供CPU 6與GPU 10之間的接口的一組軟件指令。圖形API可致使GPU驅(qū)動器制定且發(fā)出一個或一個以上命令,所述命令致使GPU 10將繪制圖元渲染到可顯示的圖形信息。所述命令可指定將對圖元執(zhí)行的操作,例如渲染。另外,所述命令可包含圖元的頂點(diǎn)的位置坐標(biāo)、與圖元的每一頂點(diǎn)相關(guān)聯(lián)的色彩信息、與圖元的每一頂點(diǎn)相關(guān)聯(lián)的紋理信息、圖元的按比例縮放信息、圖元的旋轉(zhuǎn)信息等。與圖元的頂點(diǎn)相關(guān)聯(lián)的信息可稱為頂點(diǎn)“屬性”代替于在命令內(nèi)包含頂點(diǎn)屬性,命令可在裝置存儲器8內(nèi)指定可存儲頂點(diǎn)屬性的地址。GPU 10接收來自CPU 6的命令且配置GPU 10的一個或一個以上處理元件以執(zhí)行命令中指定的操作。GPU 10的圖形管線中的每一者可對相應(yīng)的頂點(diǎn)執(zhí)行若干圖形操作。舉例來說,圖形管線中的每一者可經(jīng)配置以計(jì)算沿著將在模型空間(也稱為用戶空間或?qū)ο罂臻g)中渲染的曲線的頂點(diǎn)的位置坐標(biāo)。GPU 10可(例如)經(jīng)配置以使用與曲線類型和由CPU 6指定的控制點(diǎn)相關(guān)聯(lián)的數(shù)學(xué)等式來計(jì)算模型空間中的頂點(diǎn)。作為另一實(shí)例,圖形管線中的每一者可經(jīng)配置以將曲線或曲線上的頂點(diǎn)的位置坐標(biāo)(或位置屬性)變換到不同的坐標(biāo)系。特定來說,GPU 10可將曲線或曲線上的頂點(diǎn)的位置坐標(biāo)(或?qū)傩?從模型或用戶坐標(biāo)空間變換到顯示器或表面坐標(biāo)空間(有時稱為裝置坐標(biāo)空間)。模型坐標(biāo)空間表示圖形圖像如何由利用圖形處理的軟件應(yīng)用程序的指令界定。通常,輸入頂點(diǎn)的位置坐標(biāo)可在模型坐標(biāo)空間中使用浮點(diǎn)數(shù)來表示。另一方面,顯示器坐標(biāo)空間可表示圖形圖像將如何在裝置(例如,顯示器16)上顯示。經(jīng)變換頂點(diǎn)的位置坐標(biāo)可在顯示器坐標(biāo)空間中使用對應(yīng)于顯示器16上的像素位置的整數(shù)來表示。然而,經(jīng)變換頂點(diǎn)的位置坐標(biāo)可在顯示器坐標(biāo)空間中使用浮點(diǎn)數(shù)來表示。在一些實(shí)例中,兩個或兩個以上輸入頂點(diǎn)在模型坐標(biāo)空間中的位置坐標(biāo)可對應(yīng)于在顯示器坐標(biāo)空間中的大體上相同的位置坐標(biāo)。由此,GPU 10可在顯示器坐標(biāo)空間中產(chǎn)生重復(fù)的頂點(diǎn)。此問題可因GPU 10的并行結(jié)構(gòu)而加劇。換句話說,因?yàn)镚PU 10完全并行地對多個輸入頂點(diǎn)進(jìn)行操作,所以顯示器坐標(biāo)系中的重復(fù)頂點(diǎn)可經(jīng)由圖形管線來處理。這導(dǎo)致可用硬件的低效使用以及圖像向顯示器16渲染的速度減小。根據(jù)本發(fā)明的一個方面,GPU 10可從圖形管線移除一個或一個以上頂點(diǎn),以更高效地利用GPU 10的硬件資源,且增加圖像向顯示器16渲染的速度。舉例來說,GPU 10可移除重復(fù)(或冗余)的頂點(diǎn),例如在顯示器坐標(biāo)空間中具有大體上相同位置坐標(biāo)的頂點(diǎn)。舉例來說,如果兩個頂點(diǎn)在彼此的像素的1/8內(nèi),即其在顯示器坐標(biāo)空間中的位置坐標(biāo)相差少于0. 125,那么所述兩個頂點(diǎn)可被視為重復(fù)或冗余的頂點(diǎn)。為了從圖形管線移除冗余頂點(diǎn), GPU 10可將每一頂點(diǎn)的位置坐標(biāo)中的每一者與先前頂點(diǎn)的位置坐標(biāo)進(jìn)行比較,且丟棄在顯示器坐標(biāo)空間中具有與先前頂點(diǎn)大體上相同的位置坐標(biāo)的頂點(diǎn),例如當(dāng)位置坐標(biāo)之間的差小于閾值(例如0. 125)時丟棄頂點(diǎn)。以此方式,GPU 10可省略對于渲染圖元來說不必要的冗余信息的處理?;蛘呋蛄硗?,GPU 10可移除在顯示器坐標(biāo)空間中具有位于一直線上的位置坐標(biāo)的選定頂點(diǎn)。此情形在曲線的由三個或三個以上頂點(diǎn)表示的部分具有極少或無曲率時發(fā)生。 在此情況下,曲線的直部分可使用從曲線的所述部分的第一頂點(diǎn)到曲線的所述部分的最后頂點(diǎn)的直線而不是沿著曲線的所述部分的每一中間頂點(diǎn)之間的一系列直線線段來同樣好地表示。換句話說,可使用線的頂點(diǎn)集合中的僅兩個頂點(diǎn)來同樣好地建立直線??梢瞥虚g或過多的頂點(diǎn)。
如果曲線的直部分包含三個頂點(diǎn),那么曲線的直部分可使用從曲線的所述部分的第一頂點(diǎn)到第三頂點(diǎn)的直線來同樣好地表示,而不是表示為一系列兩個直線線段(例如, 從第一頂點(diǎn)到第二頂點(diǎn)的第一直線線段和從第二頂點(diǎn)到第三頂點(diǎn)的第二直線線段)。GPU 10可(例如)比較由連續(xù)頂點(diǎn)形成的第一和第二線段的斜率,且在斜率大體上相同(例如, 在可容許閾值內(nèi))時移除中間(第二)頂點(diǎn)。在丟棄經(jīng)變換的頂點(diǎn)之后,GPU 10使用剩余的經(jīng)變換頂點(diǎn)來形成圖元。在一個實(shí)例中,GPU 10可就像經(jīng)丟棄頂點(diǎn)從未可用那樣使用剩余的經(jīng)變換頂點(diǎn)來形成圖元。在產(chǎn)生圖元之后,GPU 10可對圖元執(zhí)行額外的圖形操作以將圖像渲染到顯示器16。如上所述,CPU 6和GPU 10可一起作用以將曲線渲染到顯示器16。在上述實(shí)例中,CPU 6將曲線鑲嵌為若干線段,且GPU 10對所述線段執(zhí)行操作以將線段渲染到顯示器 16。然而在其它實(shí)例中,渲染功能可以不同方式在CPU 6與GPU 10之間分配。舉例來說, GPU 10可執(zhí)行鑲嵌以及其它操作。渲染功能可基于CPU 6的處理負(fù)荷、GPU 10的處理負(fù)荷等而在CPU 6與GPU 10之間分配。另外,計(jì)算裝置2可包含若干其它元件。舉例來說,計(jì)算裝置2可包含適當(dāng)?shù)挠糜诎l(fā)射和接收經(jīng)編碼的視頻的調(diào)制、解調(diào)、頻率轉(zhuǎn)換、濾波和放大器組件,在適用時,包括足以支持無線通信的射頻(RF)無線組件和天線。由此,計(jì)算裝置2可包括手持式無線通信裝置。 然而,為了便于說明,這些額外的元件未在圖1中具體說明。事實(shí)上,圖1中說明的架構(gòu)僅是示范性的。本發(fā)明中描述的技術(shù)可以多種其它架構(gòu)來實(shí)施。圖2是進(jìn)一步詳細(xì)說明圖1的GPU 10的框圖。GPU 10包含圖形管線20,其包含控制單元21、頂點(diǎn)著色器22、圖元設(shè)置單元M和像素著色器沈。如上所述,GPU 10可具有高度并行的結(jié)構(gòu),其提供復(fù)雜圖形相關(guān)的操作的較高效處理。由此,雖然圖2中僅說明一個圖形管線20,但GPU 10可包含多個類似的圖形管線,其并行地對多個頂點(diǎn)集合(例如,圖元)進(jìn)行操作。換句話說,GPU 10可包含多個頂點(diǎn)著色器22、圖元設(shè)置單元M和像素著色器26,其可完全并行地對若干數(shù)據(jù)圖元進(jìn)行操作。在一些實(shí)例中,GPU 10的高度并行性質(zhì)允許GPU 10比通過CPU 6向顯示器16直接繪制圖形圖像更快地在顯示器16上創(chuàng)建復(fù)雜的2D或3D圖形圖像。在一個實(shí)例中,GPU 10可經(jīng)設(shè)計(jì)以用于渲染3D圖形。GPU 10可結(jié)合CPU 6而操作以渲染2D或3D圖形圖像以供顯示。GPU 10的控制單元21接收來自CPU 6的命令,其指令GPU 10對界定圖元的一個或一個以上頂點(diǎn)執(zhí)行操作??刂茊卧?1對命令進(jìn)行解碼,且配置GPU 10的一個或一個以上處理元件以執(zhí)行命令中所指定的操作??刂茊卧?1可另外將命令內(nèi)含有的信息(例如,圖元或頂點(diǎn)信息)存儲在GPU存儲器12(圖1)中或GPU 10內(nèi)的一個或一個以上緩沖器(未圖示)內(nèi)或GPU 10 的處理元件內(nèi)。控制單元21可向GPU 10的處理元件中的每一者中加載致使處理元件執(zhí)行特定圖形處理操作的一組指令。在圖2中說明的實(shí)例中,GPU 10的處理元件包含頂點(diǎn)著色器22、圖元設(shè)置單元M和像素著色器沈。其它處理元件也可包含于GPU 10中,但為了簡單和易于說明而在圖2中未具體說明。頂點(diǎn)著色器22、圖元設(shè)置單元M和像素著色器沈可作為管線而操作。當(dāng)作為管線操作時,頂點(diǎn)著色器22對第一組輸入數(shù)據(jù)執(zhí)行第一組一個或一個以上圖形操作,且輸出第一組中間結(jié)果。圖元設(shè)置單元M對頂點(diǎn)著色器22輸出的中間結(jié)果執(zhí)行第二組一個或一個以上圖形操作,且輸出第二組中間結(jié)果。在圖元設(shè)置單元M執(zhí)行第二組圖形操作時,頂點(diǎn)著色器22對第二組初始輸入數(shù)據(jù)執(zhí)行第一組圖形操作。圖形處理以類似方式繼續(xù),直到產(chǎn)生圖形圖像以供顯示為止。頂點(diǎn)著色器22可經(jīng)配置以獲得界定由CPU 6產(chǎn)生的一個或一個以上頂點(diǎn)的頂點(diǎn)屬性序列。頂點(diǎn)著色器22可從裝置存儲器8(圖1)檢索頂點(diǎn)屬性序列。從CPU 6接收到的命令可指示裝置存儲器8內(nèi)存儲頂點(diǎn)屬性的位置?;蛘?,CPU 6可在所述命令內(nèi)或在一個或一個以上后續(xù)命令中包含頂點(diǎn)屬性。頂點(diǎn)屬性可包含位置屬性、一個或一個以上色彩屬性、一個或一個以上紋理屬性、 一個或一個以上照明屬性、一個或一個以上透明度屬性等。位置屬性可為指示當(dāng)前頂點(diǎn)在頂點(diǎn)序列中的順序位置的索引號。當(dāng)曲線具有(例如)N個頂點(diǎn)時,索引號包括從0到N的整數(shù)。或者,頂點(diǎn)的位置屬性可為表示位于模型空間中的曲線上的點(diǎn)的位置的位置坐標(biāo),例如針對2D的(x。,y。)坐標(biāo)。頂點(diǎn)的位置屬性可(例如)由CPU 6使用對應(yīng)于特定命令段的數(shù)學(xué)表示來計(jì)算,所述特定命令段可在圖形授權(quán)規(guī)范(例如,開放式VG)中指定。對于使用開放式VG界定為(例如)橢圓弧曲線的曲線,頂點(diǎn)的位置屬性可使用以下等式來計(jì)算X0 =-a*cos ( θ )(1)y0 = b*sin( θ ),(2)其中(X。,y。)為曲線上的頂點(diǎn)在模型空間中的位置坐標(biāo),a是橢圓形的半長軸,b 是橢圓形的半短軸,且θ < 。CPU 6可將變量a、b和θ連同等式(1)和(2) —起發(fā)送到GPU 10。如上所述,模型坐標(biāo)空間通常使用浮點(diǎn)數(shù)來表示圖形圖像如何由利用圖形處理的軟件應(yīng)用程序的指令界定?;谖恢脤傩?,頂點(diǎn)著色器22確定顯示器坐標(biāo)空間中的位置坐標(biāo)。顯示器坐標(biāo)空間(有時稱為用戶或裝置坐標(biāo)空間)表示圖形圖像將如何在裝置(例如,顯示器)上顯示。 因?yàn)轱@示器16由整數(shù)數(shù)目個物理像素的陣列構(gòu)成,所以裝置坐標(biāo)空間中的位置坐標(biāo)(x,y) 映射到顯示器16上的像素位置。頂點(diǎn)著色器22可使用相同的數(shù)學(xué)等式來計(jì)算頂點(diǎn)的位置坐標(biāo),所述等式表示由圖形軟件應(yīng)用程序界定的曲線,但具有變換到顯示器坐標(biāo)空間中的變量(或控制點(diǎn)),如下文更詳細(xì)描述。頂點(diǎn)著色器22可對其它輸入頂點(diǎn)屬性執(zhí)行若干其它操作。頂點(diǎn)著色器22可執(zhí)行一個或一個以上操作以改變頂點(diǎn)的色彩屬性、紋理屬性、照明屬性或透明度屬性中的一者或一者以上。為了簡單,本發(fā)明僅描述頂點(diǎn)的位置坐標(biāo)的變換。然而,應(yīng)理解,頂點(diǎn)著色器 22可對其它頂點(diǎn)屬性執(zhí)行其它操作。為了更高效地利用GPU 10的硬件資源且增加圖像向顯示器16渲染的速度,頂點(diǎn)著色器22可移除一個或一個以上頂點(diǎn)。頂點(diǎn)著色器22可(例如)移除空間上重復(fù)(或冗余)的頂點(diǎn),移除位于直線上的過多頂點(diǎn),或兩者。因?yàn)轱@示器坐標(biāo)空間中的位置坐標(biāo)對應(yīng)于整數(shù)數(shù)目個像素位置,所以在一些實(shí)例中,兩個或兩個以上頂點(diǎn)可映射到同一像素位置。換句話說,兩個或兩個以上頂點(diǎn)可在顯示器坐標(biāo)空間中具有大體上相同的位置坐標(biāo)。舉例來說,模型坐標(biāo)空間中或由兩個連續(xù)索引號表示的兩個或兩個以上頂點(diǎn)在由頂點(diǎn)著色器22變換時可對應(yīng)于顯示器坐標(biāo)空間中大體上相同的位置坐標(biāo)。由此,GPU 10可產(chǎn)生與特定像素位置對應(yīng)的一個以上頂點(diǎn)。以此方式, GPU 10可產(chǎn)生顯示器坐標(biāo)空間中的重復(fù)頂點(diǎn)。顯示器坐標(biāo)空間中的頂點(diǎn)可被視為對渲染圖元來說不必要的冗余信息。
由于GPU 10的并行結(jié)構(gòu),GPU 10的處理元件可與渲染圖元中所需要的頂點(diǎn)并行地對對于渲染圖元來說不必要的頂點(diǎn)進(jìn)行操作。舉例來說,GPU 10可對重復(fù)頂點(diǎn)或位于直線上的過多頂點(diǎn)進(jìn)行操作,從而導(dǎo)致可用硬件的低效使用以及圖像向顯示器16渲染的速度減小。代替于對重復(fù)或另外過多的頂點(diǎn)進(jìn)行操作,如果GPU 10丟棄重復(fù)頂點(diǎn),例如對應(yīng)于顯示器坐標(biāo)空間中的大體上相同位置坐標(biāo)的頂點(diǎn),因此允許GPU 10將其硬件資源用于對非重復(fù)頂點(diǎn)進(jìn)行操作,那么將是較高效的。為此,根據(jù)本發(fā)明的一個方面,頂點(diǎn)著色器22可移除一個或一個以上頂點(diǎn)。在一個實(shí)例中,頂點(diǎn)著色器22可從圖形管線移除冗余的頂點(diǎn),例如在顯示器坐標(biāo)空間中具有相同或大體上相同位置坐標(biāo)的頂點(diǎn),以較高效地利用GPU 10的硬件資源且增加向顯示器16 渲染圖像的速度。在一個方面中,頂點(diǎn)著色器22可計(jì)算當(dāng)前頂點(diǎn)的位置坐標(biāo)以及至少一個先前頂點(diǎn)的位置坐標(biāo)。頂點(diǎn)著色器22比較當(dāng)前與先前頂點(diǎn)的位置坐標(biāo)(即,顯示器坐標(biāo)空間中的位置坐標(biāo)),且在當(dāng)前與先前頂點(diǎn)的位置坐標(biāo)大體上相同時丟棄當(dāng)前頂點(diǎn)。在當(dāng)前頂點(diǎn)由頂點(diǎn)著色器22丟棄時,頂點(diǎn)著色器22可不提供任何輸出?;蛘撸旤c(diǎn)著色器22可輸出指示當(dāng)前頂點(diǎn)已被丟棄的信號。所述信號可允許管線的下一處理級知曉其將不接收頂點(diǎn)且資源將被釋放以用于其它操作。當(dāng)顯示器坐標(biāo)空間中的當(dāng)前與先前頂點(diǎn)的位置坐標(biāo)大體上不相同時,頂點(diǎn)著色器 22輸出當(dāng)前頂點(diǎn)的頂點(diǎn)屬性,包含在顯示器坐標(biāo)空間中的位置坐標(biāo)。在此情況下,所述至少一個先前頂點(diǎn)的位置坐標(biāo)用于確定當(dāng)前頂點(diǎn)是否是冗余的。GPU 10可針對全部N+1個頂點(diǎn)并行地執(zhí)行類似過程。在配置頂點(diǎn)著色器22時,控制單元21可向頂點(diǎn)著色器22中加載致使頂點(diǎn)著色器 22執(zhí)行上文所述功能的一組指令。如下文將更詳細(xì)描述,頂點(diǎn)著色器22可加載有界定用于計(jì)算模型空間和/或顯示器坐標(biāo)空間中的曲線的位置坐標(biāo)的數(shù)學(xué)等式以及在計(jì)算位置坐標(biāo)中必要的任何變量的指令。以下是實(shí)例偽碼,其可加載到頂點(diǎn)著色器22中且用以移除重復(fù)頂點(diǎn)。uniform float radius; uniform float N; attribute int index; float χ(float t){
return radius * cos(t);
}
float y(float t){
return radius * sin(t);
}
void main(void){
float t = ((float)index)/N; float delta t - 1.0/N; int x—curr = (int)χ (t); int y_curr = (int)y(t); int x_prev = (int)χ(t-delta_t); int y_prev = (int)y(t- delta t); if( (x—curr == x_prev) && (y_curr -= y_prev) ){ _ 一 discard;
}
gl—Position·χ = (float)x_curr;
gl_Position.y = (float)y一curr; } 一在以上實(shí)例偽碼中,頂點(diǎn)著色器22配置有指令,所述指令致使頂點(diǎn)著色器22使用表示索引或序列號的位置屬性(index)來獲得當(dāng)前和先前頂點(diǎn)的位置坐標(biāo)。在實(shí)例偽碼中,頂點(diǎn)著色器22經(jīng)配置以計(jì)算具有零度幵始角度的一個弧度的圓弧的位置坐標(biāo)。特定來說,頂點(diǎn)著色器22配置有圓弧的半徑、最大索引值N、界定由圖形軟件應(yīng)用程序界定的曲線在模型空間中的χ和y位置坐標(biāo)的數(shù)學(xué)等式,即分別為χ = radius^cos(t)和y = radius水sin(t)。頂點(diǎn)著色器22基于位置屬性(index)和最大索引值(N)來計(jì)算浮點(diǎn)值t。頂點(diǎn)著色器22還將變量t的步長(delta)計(jì)算為1/N,其表示均勻步長。在其它實(shí)例中,步長可基于曲線的曲率而自適應(yīng)。使用所計(jì)算的浮點(diǎn)值t,頂點(diǎn)著色器22計(jì)算顯示器坐標(biāo)空間中的 χ軸位置坐標(biāo)([curr)和顯示器坐標(biāo)空間中的y軸位置坐標(biāo)(y_CUrr)。特定來說,頂點(diǎn)著色器22將x_curr計(jì)算為radiuS*C0S (t)的整數(shù)值,其中t等于index/N的浮點(diǎn)值。換句話說,頂點(diǎn)著色器22將等式radiuS*C0S(t)輸出的值舍入到最近的整數(shù)值。同樣,頂點(diǎn)著色器22通過將等式radiUS*Sin (t)輸出的值舍入到最近的整數(shù)值來計(jì)算y_Curr。以此方式,頂點(diǎn)著色器22通過將模型坐標(biāo)空間中的位置坐標(biāo)舍入到最近的整數(shù)值來將模型坐標(biāo)空間中的位置坐標(biāo)變換到顯示器坐標(biāo)空間中的位置坐標(biāo)。另外,頂點(diǎn)著色器22可同樣計(jì)算先前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)(x_ prev, y_prev)。特定來說,頂點(diǎn)著色器22通過將等式radiuS*C0S (t-delta)所輸出的值舍入到最近的整數(shù)值來計(jì)算x_prev,且通過將等式radius^sin (t-delta)所輸出的值舍入到最近的整數(shù)值來計(jì)算y_prev。雖然在以上實(shí)例偽碼中,頂點(diǎn)著色器22通過將模型坐標(biāo)空間中的位置坐標(biāo)舍入到最近的整數(shù)值來將模型坐標(biāo)空間中的位置坐標(biāo)變換到顯示器坐標(biāo)空間中的位置坐標(biāo),但頂點(diǎn)著色器22可將顯示器坐標(biāo)空間中的位置坐標(biāo)保持為浮點(diǎn)數(shù)。另外,頂點(diǎn)著色器22可在變換過程期間執(zhí)行其它變換操作,例如按比例縮放、旋轉(zhuǎn)等。在此情況下,除了將浮點(diǎn)值舍入到最近的整數(shù)值以外還可執(zhí)行其它數(shù)學(xué)運(yùn)算。
頂點(diǎn)著色器22將當(dāng)前頂點(diǎn)的所計(jì)算位置坐標(biāo)與先前頂點(diǎn)的所計(jì)算位置坐標(biāo)進(jìn)行比較,且當(dāng)位置坐標(biāo)在顯示器坐標(biāo)系中相同時丟棄當(dāng)前頂點(diǎn)。換句話說,頂點(diǎn)著色器22 在兩個χ軸位置坐標(biāo)相同(x_curr = x_prev)且兩個y軸位置坐標(biāo)相同(y_curr = y_ prev)時丟棄當(dāng)前頂點(diǎn)。gl_Position.X是具有等于頂點(diǎn)的χ坐標(biāo)的位置的值的浮點(diǎn)值, 且gl_Position. y是具有等于頂點(diǎn)的y坐標(biāo)的位置的值的浮點(diǎn)值。gl_Position. χ和gl_ Position, y允許頂點(diǎn)著色器22指定頂點(diǎn)位置位于其內(nèi)的特定寄存器。當(dāng)將顯示器坐標(biāo)空間中的位置坐標(biāo)表示為浮點(diǎn)數(shù)時,當(dāng)兩個頂點(diǎn)的值之間的差在彼此的像素的1/8內(nèi)(S卩,其在顯示器坐標(biāo)空間中在兩個維度(例如,χ和ι維度)上的位置坐標(biāo)相差少于0. 125)時丟棄當(dāng)前頂點(diǎn)。雖然上文描述為在顯示器坐標(biāo)空間中發(fā)生,但頂點(diǎn)著色器22可通過在模型或用戶坐標(biāo)空間中執(zhí)行比較來丟棄頂點(diǎn)。在以上實(shí)例中,頂點(diǎn)著色器22輸入當(dāng)前頂點(diǎn)的索引值作為頂點(diǎn)位置屬性。索引值可具有從0到N的整數(shù)值,其中每一后續(xù)頂點(diǎn)具有序列的下一索引值。換句話說,如果當(dāng)前頂點(diǎn)的索引值為“2”,那么先前頂點(diǎn)的索引值為“1”,后續(xù)頂點(diǎn)的索引值為“3”,依此類推。 在本發(fā)明的技術(shù)的一個方面中,GPU 10可產(chǎn)生此整數(shù)序列,而不是從裝置存儲器8讀取此屬性或從CPU 6接收包含所述屬性的命令。在GPU 10內(nèi)產(chǎn)生整數(shù)序列可減少在總線18上使用的帶寬量??刂茊卧?1可(例如)維持計(jì)數(shù)器觀,其用于從0到N對經(jīng)處理的頂點(diǎn)進(jìn)行計(jì)數(shù)。由此,控制單元21通常在頂點(diǎn)的頂點(diǎn)屬性加載到頂點(diǎn)著色器22中時遞增計(jì)數(shù)器觀。 在一些方面中,控制單元21可使用計(jì)數(shù)器觀作為索引屬性的來源。舉例來說,控制單元21 可提供計(jì)數(shù)器觀的值作為當(dāng)前頂點(diǎn)的索引屬性且在將當(dāng)前索引值加載到頂點(diǎn)著色器22中之后即刻使計(jì)數(shù)器觀的值遞增一。這使得總線18上的傳入帶寬消耗量減小,因?yàn)闊o需從裝置存儲器8或CPU 6加載位置頂點(diǎn)屬性。在一些實(shí)例中,頂點(diǎn)著色器22可通過移除位于大體上直線上的過多頂點(diǎn)來減少來自從CPU 6接收的頂點(diǎn)集合的頂點(diǎn)的數(shù)目。換句話說,頂點(diǎn)著色器22可移除大體上位于使用先前頂點(diǎn)和后續(xù)頂點(diǎn)建立的直線上的中間頂點(diǎn)。如本發(fā)明中所描述,位于直線上的中間或過多頂點(diǎn)對于渲染圖元來說可能是不必要的。頂點(diǎn)著色器22可在不移除冗余頂點(diǎn)的情況下或除了移除冗余頂點(diǎn)外還移除位于大體上直線上的過多或中間頂點(diǎn)。為了移除直線上的過多或中間頂點(diǎn),頂點(diǎn)著色器22可計(jì)算當(dāng)前頂點(diǎn)以及先前頂點(diǎn)和在具有三個頂點(diǎn)的直線線段的情況下的后續(xù)頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)。類似技術(shù)可結(jié)合具有三個以上頂點(diǎn)的直線線段而使用。頂點(diǎn)著色器22可以如上文詳細(xì)描述的相同方式計(jì)算頂點(diǎn)的位置坐標(biāo)。作為一個實(shí)例,頂點(diǎn)著色器22可如以上實(shí)例偽碼中所描述而計(jì)算當(dāng)前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)(X_curr,y_curr)和先前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)(X_prev,y_prev),且使用t = t+delta進(jìn)一步計(jì)算后續(xù)頂點(diǎn)的經(jīng)變換位置坐標(biāo)(x_subs,y_subs)。在計(jì)算先前、當(dāng)前和后續(xù)頂點(diǎn)的經(jīng)變換位置頂點(diǎn)之后,頂點(diǎn)著色器22確定經(jīng)變換位置頂點(diǎn)是否位于大體上直線上。為此,頂點(diǎn)著色器22可將連接當(dāng)前頂點(diǎn)和先前頂點(diǎn)的位置坐標(biāo)的線段的斜率與連接后續(xù)頂點(diǎn)與當(dāng)前頂點(diǎn)的位置坐標(biāo)的線段的斜率進(jìn)行比較。當(dāng)兩個線段的斜率大體上相等(例如,在可容許差或以下等式(3)中的“THR”內(nèi))時,頂點(diǎn)著色器22確定頂點(diǎn)位于大體上直線上。頂點(diǎn)著色器22可(例如)在
((x_curr~x_prev) * (y_curr-y_subs))-((x_curr_x_subs) * ((y_curr-y_ prev)) ^ THR(3)時確定經(jīng)變換位置頂點(diǎn)位于直線上。當(dāng)頂點(diǎn)著色器22確定頂點(diǎn)的經(jīng)變換位置坐標(biāo)位于大體上直線上(即,小于或等于THR)時,頂點(diǎn)著色器22丟棄當(dāng)前頂點(diǎn)。在一些實(shí)例中,頂點(diǎn)著色器22在確定頂點(diǎn)是否位于直線上時可容許特定程度的誤差。在一些實(shí)例中,GPU 10可計(jì)算曲線的較高導(dǎo)數(shù)且使用所述較高導(dǎo)數(shù)來確定是否丟棄頂點(diǎn)。舉例來說,GPU 10可計(jì)算表示曲線的曲率(例如,斜率)的二階導(dǎo)數(shù),且基于曲線在頂點(diǎn)的位置處的曲率來確定是否丟棄頂點(diǎn)。舉例來說,GPU 10可在曲線的曲率在頂點(diǎn)的位置處具有高值的情況下確定不丟棄頂點(diǎn)。當(dāng)頂點(diǎn)著色器22確定保持當(dāng)前頂點(diǎn),例如頂點(diǎn)不是重復(fù)或冗余頂點(diǎn)或與不與相鄰頂點(diǎn)位于直線上時,頂點(diǎn)著色器22輸出經(jīng)變換頂點(diǎn)或界定經(jīng)變換頂點(diǎn)的屬性。在一個實(shí)例中,頂點(diǎn)著色器22可將輸出的頂點(diǎn)或界定經(jīng)變換頂點(diǎn)的屬性直接提供到圖形管線20中的下一級,例如圖元設(shè)置單元對。在其它實(shí)例中,頂點(diǎn)著色器22可將經(jīng)變換頂點(diǎn)或界定經(jīng)變換頂點(diǎn)的屬性存儲到存儲器,例如GPU存儲器12或裝置存儲器8。在上述實(shí)例中,頂點(diǎn)著色器22使用先前和/或后續(xù)頂點(diǎn)來做出關(guān)于當(dāng)前頂點(diǎn)的確定。換句話說,頂點(diǎn)著色器22計(jì)算先前和/或后續(xù)頂點(diǎn)的位置坐標(biāo),以便確定頂點(diǎn)是否是先前頂點(diǎn)的重復(fù)或是否與先前頂點(diǎn)和后續(xù)頂點(diǎn)位于直線上。因此,對于曲線上的每一頂點(diǎn), 頂點(diǎn)著色器22執(zhí)行兩個或兩個以上額外“開銷”計(jì)算以變換當(dāng)前頂點(diǎn)。舉例來說,為了確定當(dāng)前頂點(diǎn)的位置坐標(biāo)是否與先前頂點(diǎn)的位置坐標(biāo)大體上相同,頂點(diǎn)著色器22除了變換當(dāng)前頂點(diǎn)的位置坐標(biāo)外還變換先前頂點(diǎn)的位置坐標(biāo)。假定已執(zhí)行的僅有操作是變換當(dāng)前頂點(diǎn)的位置坐標(biāo),這可導(dǎo)致開銷計(jì)算的100%增加(例如,所執(zhí)行運(yùn)算的數(shù)目的100%增加)。 作為另一實(shí)例,為了確定當(dāng)前頂點(diǎn)的位置坐標(biāo)是否與先前和后續(xù)頂點(diǎn)位于直線上,頂點(diǎn)著色器22變換先前頂點(diǎn)、當(dāng)前頂點(diǎn)和后續(xù)頂點(diǎn)的位置坐標(biāo)。假定已執(zhí)行的僅有操作是變換當(dāng)前頂點(diǎn)的位置坐標(biāo),這可導(dǎo)致開銷計(jì)算的200%增加。然而,這些開銷計(jì)算可能消除稍后在圖形管線20中執(zhí)行的若干其它較復(fù)雜的計(jì)算。在一些實(shí)例中,頂點(diǎn)著色器22可經(jīng)配置以通過變換多個頂點(diǎn)來減少此開銷計(jì)算。 作為實(shí)例,頂點(diǎn)著色器22可經(jīng)配置以同時變換四個頂點(diǎn)。在此實(shí)例中,頂點(diǎn)著色器22可獲得索引值(i)且計(jì)算五個頂點(diǎn)的位置坐標(biāo),例如對應(yīng)于索引值i_l、i、i+l、i+2和i+3的頂點(diǎn)。頂點(diǎn)著色器22可將頂點(diǎn)i、i+1、i+2和i+3中的每一者的位置坐標(biāo)分別與對應(yīng)于索引值i-1、i、i+1和i+2的先前頂點(diǎn)中的每一者的位置坐標(biāo)進(jìn)行比較,以確定頂點(diǎn)中的任一者是否重復(fù)。頂點(diǎn)著色器22可輸出至多達(dá)四個經(jīng)變換頂點(diǎn)(如果沒有頂點(diǎn)重復(fù))。以此方式,頂點(diǎn)著色器22可將計(jì)算開銷從100% (每輸入頂點(diǎn)一次開銷計(jì)算)減少到25% (每四個輸入頂點(diǎn)一次開銷計(jì)算)。圖元設(shè)置單元M使用經(jīng)變換頂點(diǎn)來產(chǎn)生圖元。圖元設(shè)置單元M可(例如)使用若干由三個經(jīng)變換頂點(diǎn)組成的集合來產(chǎn)生三角形圖元,例如三角形條、三角形扇或單獨(dú)的三角形。然而在其它實(shí)例中,圖元設(shè)置單元M可使用三個以下經(jīng)變換頂點(diǎn)或三個以上經(jīng)變換頂點(diǎn)來產(chǎn)生其它類型的圖元。舉例來說,圖元設(shè)置單元M可產(chǎn)生的其它圖元包含點(diǎn)、線條、線環(huán)、單獨(dú)的線、四邊形條、單獨(dú)的四邊形或其它類型的多邊形。為了說明的目的,本發(fā)明將圖元設(shè)置單元M描述為產(chǎn)生三角形扇圖元。然而,如本文廣義描述的技術(shù)不應(yīng)被限定于三角形扇圖元,而是可用于任何類型的圖元。三角形扇是一系列連接的三角形。三角形扇的所連接的三角形中的每一者與每一相鄰三角形共享兩個共用頂點(diǎn),即根頂點(diǎn)和至少一個其它頂點(diǎn)。為了產(chǎn)生(例如)三角形扇圖元,圖元設(shè)置單元M界定根頂點(diǎn)。在大多數(shù)實(shí)例中,圖元設(shè)置單元M所產(chǎn)生的根頂點(diǎn)不位于界定對象的曲線上。事實(shí)上,根頂點(diǎn)可位于鄰近于界定對象的曲線的凹入部分處。為了產(chǎn)生三角形扇圖元,圖元設(shè)置單元M將根頂點(diǎn)與位于界定對象的曲線上的兩個頂點(diǎn)相連接。以此方式,圖元設(shè)置單元M所產(chǎn)生的三角形圖元中的每一者共享根頂點(diǎn)和位于界定對象的曲線上的至少一個頂點(diǎn)。因此,圖元設(shè)置單元M可使用僅N+2個頂點(diǎn)來產(chǎn)生具有N 個三角形圖元的三角形扇。按照慣例,當(dāng)丟棄頂點(diǎn)時,圖元設(shè)置單元M丟棄含有所丟棄頂點(diǎn)的所有圖元。在 (例如)三角形扇的情況下,圖元設(shè)置單元M丟棄所丟棄的每一頂點(diǎn)的兩個鄰近的三角形圖元。在一些情況下,例如在因?yàn)橄袼貫橹貜?fù)性的或因?yàn)楫?dāng)前頂點(diǎn)位于連接相鄰頂點(diǎn)的直線上而丟棄像素時,可能不期望丟棄含有所丟棄像素的所有圖元。因此,圖元設(shè)置單元M 可不丟棄包含所丟棄頂點(diǎn)的所有圖元。相反,圖元設(shè)置單元M可將圖元設(shè)置為如同所丟棄頂點(diǎn)從不是頂點(diǎn)那樣。在例如三角形扇的情況下,圖元設(shè)置單元對可使用三角形扇的根頂點(diǎn)、先前未丟棄頂點(diǎn)和在所丟棄頂點(diǎn)之后的第一未丟棄頂點(diǎn)來產(chǎn)生三角形圖元。因此,代替于丟棄包含所丟棄頂點(diǎn)的兩個鄰近三角形圖元,圖元設(shè)置單元M形成單個三角形圖元代替兩個鄰近三角形圖元。像素著色器沈基于頂點(diǎn)屬性將圖元設(shè)置單元M輸出的圖元轉(zhuǎn)換為像素。像素著色器沈可(例如)對圖元執(zhí)行剪切操作,且確定屏幕中的哪些像素在對象的幾何形狀內(nèi)且因此需要繪制。另外,像素著色器沈可執(zhí)行圖元的頂點(diǎn)的頂點(diǎn)屬性的內(nèi)插以產(chǎn)生像素?cái)?shù)據(jù)。像素著色器26可另外執(zhí)行每像素紋理化、霧化和染色操作以產(chǎn)生色彩值以在每一像素位置處顯示。圖2中說明的架構(gòu)僅為示范性的,因?yàn)楸景l(fā)明中所描述的技術(shù)可以多種其它架構(gòu)實(shí)施。舉例來說,GPU 10可利用單個著色器核心,其可執(zhí)行用于頂點(diǎn)著色器22和像素著色器26的功能。單個著色器核心可(例如)由控制單元21基于圖形操作處于管線的哪一級來配置以充當(dāng)頂點(diǎn)著色器22或像素著色器26。而且,圖1中說明的特征可由硬件和/或軟件組件的任一合適組合來實(shí)現(xiàn)。圖3是根據(jù)本發(fā)明技術(shù)的丟棄一個或一個以上頂點(diǎn)的實(shí)例性頂點(diǎn)著色器22A的框圖。頂點(diǎn)著色器22A可(例如)對應(yīng)于圖2的頂點(diǎn)著色器22。頂點(diǎn)著色器22A包含位置坐標(biāo)計(jì)算模塊30,其計(jì)算當(dāng)前頂點(diǎn)和至少一個額外頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo); 以及頂點(diǎn)丟棄模塊32,其確定是否丟棄所計(jì)算頂點(diǎn)中的任一者。位置坐標(biāo)計(jì)算模塊30獲得表示至少一個頂點(diǎn)的一個或一個以上頂點(diǎn)屬性。在圖 3的實(shí)例中,位置坐標(biāo)計(jì)算模塊30獲得索引屬性i,其指示頂點(diǎn)在其它頂點(diǎn)當(dāng)中的位置。位置坐標(biāo)計(jì)算模塊30計(jì)算與索引屬性相關(guān)聯(lián)的頂點(diǎn)(即,當(dāng)前頂點(diǎn))在顯示器坐標(biāo)空間中的位置坐標(biāo)。位置坐標(biāo)計(jì)算模塊30還計(jì)算至少一個其它頂點(diǎn)(例如,先前頂點(diǎn))在顯示器坐標(biāo)空間中的位置坐標(biāo)。如上文相對于圖2詳細(xì)描述,位置坐標(biāo)計(jì)算模塊30可使用表示由圖形軟件應(yīng)用程序界定的曲線的數(shù)學(xué)等式和作為索引屬性i的函數(shù)而計(jì)算的變量來計(jì)算位置坐標(biāo)。當(dāng)前和先前頂點(diǎn)的位置坐標(biāo)在圖3中分別表示為(x_curr,y_curr)和(X_prev, y_prev)。頂點(diǎn)丟棄模塊32接收當(dāng)前和先前頂點(diǎn)的所計(jì)算的位置坐標(biāo)。頂點(diǎn)丟棄模塊32將當(dāng)前頂點(diǎn)的所計(jì)算的位置坐標(biāo)與先前頂點(diǎn)的所計(jì)算的位置坐標(biāo)進(jìn)行比較,且當(dāng)顯示器坐標(biāo)空間中的位置坐標(biāo)大體上相同時丟棄當(dāng)前頂點(diǎn)。換句話說,頂點(diǎn)丟棄模塊32在X_CUrr = x_prev且y_curr = y_prev時丟棄當(dāng)前頂點(diǎn)。以此方式,頂點(diǎn)著色器22A移除顯示器坐標(biāo)空間中的冗余頂點(diǎn)。在丟棄當(dāng)前頂點(diǎn)之后,頂點(diǎn)丟棄模塊32可即刻輸出指示當(dāng)前頂點(diǎn)被丟棄的丟棄信號?;蛘?,頂點(diǎn)丟棄模塊32可在當(dāng)前頂點(diǎn)被丟棄時不輸出任何信號。當(dāng)頂點(diǎn)丟棄模塊32 不丟棄當(dāng)前頂點(diǎn)時,即當(dāng)前和先前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)不同時,頂點(diǎn)丟棄模塊32輸出當(dāng)前頂點(diǎn)的位置坐標(biāo)(x_curr,y_curr)。雖然在基于所接收索引屬性來計(jì)算當(dāng)前和先前頂點(diǎn)的位置坐標(biāo)的方面來描述位置坐標(biāo)計(jì)算模塊30,但位置坐標(biāo)計(jì)算模塊30可接收其它位置屬性以用于計(jì)算當(dāng)前和先前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)。舉例來說,位置坐標(biāo)計(jì)算模塊30可接收當(dāng)前和先前頂點(diǎn)在模型坐標(biāo)空間中的位置坐標(biāo),且使用變換等式來計(jì)算當(dāng)前和先前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)。在又一實(shí)例中,位置坐標(biāo)計(jì)算模塊30可僅計(jì)算當(dāng)前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)。在此情況下,位置坐標(biāo)計(jì)算模塊30可接收先前計(jì)算的先前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)用于比較。圖4是根據(jù)本發(fā)明一個方面的輸出多個頂點(diǎn)的實(shí)例性頂點(diǎn)著色器22B的框圖。頂點(diǎn)著色器22B可(例如)對應(yīng)于圖2的頂點(diǎn)著色器22。頂點(diǎn)著色器22B包含位置坐標(biāo)計(jì)算模塊40,其計(jì)算多個頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo);以及頂點(diǎn)丟棄模塊42,其確定是否丟棄所計(jì)算頂點(diǎn)中的任一者。位置坐標(biāo)計(jì)算模塊40獲得表示至少一個頂點(diǎn)的一個或一個以上頂點(diǎn)屬性。在圖4 的實(shí)例中,位置坐標(biāo)計(jì)算模塊30獲得索引屬性i,其指示在頂點(diǎn)序列中的位置。位置坐標(biāo)計(jì)算模塊40計(jì)算多個頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)。在圖4的實(shí)例中,位置坐標(biāo)計(jì)算模塊40計(jì)算五個頂點(diǎn)的像素坐標(biāo)(xl,yl)、(x2, y2)、(x3, y3)、(x4, y4)和(x5, y5)。如上文相對于圖2詳細(xì)描述,位置坐標(biāo)計(jì)算模塊40可使用表示由圖形軟件應(yīng)用程序界定的曲線的數(shù)學(xué)等式和作為索引屬性i的函數(shù)而計(jì)算的變量來計(jì)算位置坐標(biāo)。頂點(diǎn)丟棄模塊42接收所述多個頂點(diǎn)的所計(jì)算的位置坐標(biāo)且確定是否丟棄頂點(diǎn)中的任一者。頂點(diǎn)丟棄模塊42可(例如)將頂點(diǎn)的所計(jì)算位置坐標(biāo)(x2,W)到(x5,y5)中的每一者分別與先前頂點(diǎn)的位置坐標(biāo)(xl,yl)到(x4,y4)進(jìn)行比較。頂點(diǎn)丟棄模塊42丟棄在顯示器坐標(biāo)空間中具有與對應(yīng)的先前頂點(diǎn)大體上相同的位置坐標(biāo)的頂點(diǎn)。以此方式, 頂點(diǎn)著色器22B移除顯示器坐標(biāo)空間中的冗余頂點(diǎn)。頂點(diǎn)丟棄模塊42可另外確定頂點(diǎn)中的至少一些是否與鄰近頂點(diǎn)位于直線上。在圖4的實(shí)例中,頂點(diǎn)丟棄模塊42可確定頂點(diǎn)的位置坐標(biāo)(x2,y2)到(X4,y4)是否位于直線上。為此,頂點(diǎn)丟棄模塊42可將連接頂點(diǎn)的位置坐標(biāo)(x2,W)和先前頂點(diǎn)的位置坐標(biāo)(xl, yl)的線段的斜率與連接后續(xù)頂點(diǎn)的位置坐標(biāo)(x3,y3)和頂點(diǎn)的位置坐標(biāo)(x2,y2)的線段的斜率進(jìn)行比較。當(dāng)兩個線段的斜率大體上相等(例如,在可容許的差內(nèi))時,頂點(diǎn)丟棄模塊42確定頂點(diǎn)位于大體上直線上,且丟棄頂點(diǎn)(x2,y2)。頂點(diǎn)丟棄模塊42對頂點(diǎn)的位置坐標(biāo)(x3, y3)和(x4, y4)執(zhí)行相同分析。頂點(diǎn)丟棄模塊42可不對頂點(diǎn)的位置坐標(biāo)(xl, yl) 和(x5,y5)執(zhí)行線分析,因?yàn)閷τ谠?xl,yl)之前的先前頂點(diǎn)且對于在(x5,y5)之后的后續(xù)頂點(diǎn)不存在位置坐標(biāo)用于計(jì)算線段的斜率。頂點(diǎn)丟棄模塊42可在未丟棄頂點(diǎn)的情況下輸出至多達(dá)四個頂點(diǎn)的位置坐標(biāo)。在圖4中說明的實(shí)例中,頂點(diǎn)丟棄模塊42丟棄頂點(diǎn)(x3,y3)的位置坐標(biāo),例如因?yàn)槠涫菑?fù)制的或與其相鄰頂點(diǎn)位于直線上。由此,頂點(diǎn)丟棄模塊42輸出三個頂點(diǎn)的位置坐標(biāo)。通過計(jì)算和輸出多個頂點(diǎn)的位置坐標(biāo),頂點(diǎn)著色器22B可減少計(jì)算開銷。當(dāng)頂點(diǎn)著色器22B可輸出(例如)至多達(dá)四個頂點(diǎn)的位置坐標(biāo)時,頂點(diǎn)著色器22B可將計(jì)算開銷從100% (每輸入頂點(diǎn)一次開銷計(jì)算)減少到25% (每四個輸入頂點(diǎn)一次開銷計(jì)算)。雖然在圖4中描述的實(shí)例中頂點(diǎn)著色器22B可輸出至多達(dá)四個頂點(diǎn)的位置坐標(biāo),但頂點(diǎn)著色器22B可經(jīng)配置以輸出任一數(shù)目的頂點(diǎn)的位置坐標(biāo)。舉例來說,頂點(diǎn)著色器22B可經(jīng)配置以輸出四個以上或四個以下頂點(diǎn)的位置坐標(biāo)。圖5是說明頂點(diǎn)著色器22丟棄顯示器坐標(biāo)空間中的重復(fù)頂點(diǎn)的實(shí)例性操作的流程圖。頂點(diǎn)著色器22可獲得界定位于待渲染曲線上的至少一個頂點(diǎn)的一個或一個以上頂點(diǎn)屬性(50)。頂點(diǎn)屬性包含位置屬性,例如指示當(dāng)前頂點(diǎn)在頂點(diǎn)序列中的位置的與當(dāng)前頂點(diǎn)相關(guān)聯(lián)的索引號。在另一實(shí)例中,位置屬性可為位置坐標(biāo),例如2D曲線的(X,y)坐標(biāo)或 3D曲線的(x,y,z)坐標(biāo)。頂點(diǎn)屬性可另外包含與頂點(diǎn)相關(guān)聯(lián)的其它信息,例如一個或一個以上色彩屬性、一個或一個以上紋理屬性、一個或一個以上照明屬性等。頂點(diǎn)著色器22可從裝置存儲器8、從來自CPU 6的命令或在索引號的情況下從GPU 10內(nèi)的計(jì)數(shù)器觀獲得頂點(diǎn)屬性序列。頂點(diǎn)著色器22計(jì)算當(dāng)前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)(5 。當(dāng)前頂點(diǎn)是頂點(diǎn)著色器22當(dāng)前正對其進(jìn)行操作的頂點(diǎn)。頂點(diǎn)著色器22還計(jì)算先前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)(54)。先前頂點(diǎn)可為緊在當(dāng)前頂點(diǎn)之前的頂點(diǎn)。在例如索引屬性的情況下,頂點(diǎn)著色器22可使用表示由圖形軟件應(yīng)用程序界定的曲線的數(shù)學(xué)等式和作為索引屬性i的函數(shù)而計(jì)算的變量來計(jì)算位置坐標(biāo),例如如相對于圖2的偽碼所展示和描述。當(dāng)前和先前頂點(diǎn)的位置坐標(biāo)可表示將用以在顯示器上呈現(xiàn)曲線的顯示器上的位置,例如像素陣列當(dāng)中的像素位置。頂點(diǎn)著色器22確定當(dāng)前和先前頂點(diǎn)的顯示器位置坐標(biāo)是否大體上相同(56)。舉例來說,頂點(diǎn)著色器22可將當(dāng)前頂點(diǎn)的所計(jì)算顯示器位置坐標(biāo)與先前頂點(diǎn)的所計(jì)算顯示器位置坐標(biāo)進(jìn)行比較,以確定所述顯示器位置坐標(biāo)是否大體上相同,例如在可容許閾值內(nèi)。 當(dāng)顯示器位置坐標(biāo)大體上相同時,頂點(diǎn)著色器22丟棄當(dāng)前頂點(diǎn)(57)。在一些實(shí)例中,頂點(diǎn)著色器22可輸出指示當(dāng)前頂點(diǎn)被丟棄的丟棄信號。或者,頂點(diǎn)著色器22可不輸出任何東西,例如在不向其它模塊或元件指示頂點(diǎn)被丟棄的情況下丟棄頂點(diǎn)。以此方式,頂點(diǎn)著色器 22移除顯示器坐標(biāo)空間中的冗余頂點(diǎn)。當(dāng)頂點(diǎn)著色器22確定顯示器位置坐標(biāo)并非大體上相同時,頂點(diǎn)著色器22輸出當(dāng)前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)(58)。雖然圖5的流程圖描述頂點(diǎn)著色器22做出關(guān)于是否丟棄單個頂點(diǎn)的確定,但頂點(diǎn)著色器可經(jīng)配置以同時針對一個以上頂點(diǎn)做出此確定,如上文詳細(xì)描述。舉例來說,頂點(diǎn)著色器22可經(jīng)配置以通過計(jì)算N個頂點(diǎn)的位置坐標(biāo)以及緊在N個頂點(diǎn)之前的一個頂點(diǎn)的位置坐標(biāo)來同時確定是否丟棄N個頂點(diǎn)。頂點(diǎn)著色器22可將N個頂點(diǎn)中的每一者的位置坐標(biāo)與對應(yīng)的先前頂點(diǎn)的位置坐標(biāo)進(jìn)行比較,以確定N個頂點(diǎn)中的任一者是否重復(fù)。頂點(diǎn)著色器22可輸出至多達(dá)N個頂點(diǎn)(如果沒有頂點(diǎn)重復(fù))。 以此方式,頂點(diǎn)著色器22可將計(jì)算開銷從100% (每輸入頂點(diǎn)一次開銷計(jì)算)減少到25% (每四個輸入頂點(diǎn)一次開銷計(jì)算)。圖6是說明丟棄顯示器坐標(biāo)空間中的位于直線上的至少一些頂點(diǎn)的頂點(diǎn)著色器 22的實(shí)例性操作的流程圖。頂點(diǎn)著色器22可獲得界定位于待渲染曲線上的至少一個頂點(diǎn)的一個或一個以上頂點(diǎn)屬性(60)。頂點(diǎn)屬性包含位置屬性,例如指示當(dāng)前頂點(diǎn)在頂點(diǎn)序列中的位置的與當(dāng)前頂點(diǎn)相關(guān)聯(lián)的索引號。在另一實(shí)例中,位置屬性可為位置坐標(biāo),例如2D 曲線的(x,y)坐標(biāo)或3D曲線的(x,y,z)坐標(biāo)。頂點(diǎn)屬性可另外包含與頂點(diǎn)相關(guān)聯(lián)的其它信息,例如正常屬性、一個或一個以上色彩屬性、一個或一個以上紋理屬性、一個或一個以上照明屬性等。頂點(diǎn)著色器22可從裝置存儲器8、從來自CPU 6的命令或在索引號的情況下從GPU 10內(nèi)獲得頂點(diǎn)屬性序列。頂點(diǎn)著色器22計(jì)算當(dāng)前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)(6 。當(dāng)前頂點(diǎn)是頂點(diǎn)著色器22當(dāng)前正對其進(jìn)行操作的頂點(diǎn)。頂點(diǎn)著色器22還計(jì)算先前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)(64)。先前頂點(diǎn)可為緊在當(dāng)前頂點(diǎn)之前的頂點(diǎn)。頂點(diǎn)著色器22還計(jì)算后續(xù)頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)(66)。后續(xù)頂點(diǎn)可為緊在當(dāng)前頂點(diǎn)之后的頂點(diǎn)。 在(例如)索引屬性的情況下,頂點(diǎn)著色器22可使用表示由圖形軟件應(yīng)用程序界定的曲線的數(shù)學(xué)等式和作為索引屬性i的函數(shù)而計(jì)算的變量來計(jì)算位置坐標(biāo),例如相對于圖2的偽碼所展示和描述。頂點(diǎn)著色器22確定頂點(diǎn)是否位于大體上直線上(68)。舉例來說,頂點(diǎn)著色器22 可將連接當(dāng)前頂點(diǎn)和先前頂點(diǎn)的位置坐標(biāo)的線段的斜率與連接后續(xù)頂點(diǎn)和當(dāng)前頂點(diǎn)的位置坐標(biāo)的線段的斜率進(jìn)行比較。當(dāng)兩個線段的斜率大體上相等(例如,在可容許的差內(nèi)) 時,頂點(diǎn)著色器22確定頂點(diǎn)位于大體上直線上。當(dāng)頂點(diǎn)著色器22確定頂點(diǎn)位于大體上直線上時,頂點(diǎn)著色器22丟棄當(dāng)前頂點(diǎn) (70)。丟棄當(dāng)前頂點(diǎn)不影響向顯示器渲染的圖像,因?yàn)檫B接先前和后續(xù)頂點(diǎn)的線段與連接先前和當(dāng)前頂點(diǎn)以及連接當(dāng)前和后續(xù)頂點(diǎn)的線段相同。當(dāng)頂點(diǎn)著色器22確定頂點(diǎn)位于大體上直線上時,頂點(diǎn)著色器22輸出當(dāng)前頂點(diǎn)在顯示器坐標(biāo)空間中的位置坐標(biāo)m。頂點(diǎn)著色器22可在不移除冗余頂點(diǎn)或除了移除冗余頂點(diǎn)外還移除位于大體上直線上的頂點(diǎn),如相對于圖5所述。本文中所描述的技術(shù)可以硬件、軟件、固件或其任一組合來實(shí)施。被描述為模塊或組件的任何特征可共同實(shí)施于集成邏輯裝置中或單獨(dú)實(shí)施為離散但可互操作的邏輯裝置。 在一些情況下,可將各種特征實(shí)施為集成電路裝置,例如,集成電路芯片或芯片組。如果以軟件來實(shí)施,那么可至少部分由包括當(dāng)執(zhí)行時實(shí)施上述方法中的一者或一者以上的指令的計(jì)算機(jī)可讀媒體來實(shí)現(xiàn)所述技術(shù)。所述計(jì)算機(jī)可讀媒體可形成可包含封裝材料的計(jì)算機(jī)程序產(chǎn)品的部分。計(jì)算機(jī)可讀媒體可包括例如同步動態(tài)隨機(jī)存取存儲器(SDRAM)等隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、非易失性隨機(jī)存取存儲器(NVRAM)、電可擦除可編程只讀存儲器(EEPROM)、快閃存儲器、磁性或光學(xué)數(shù)據(jù)存儲媒體等。另外或或者,所述技術(shù)可至少部分由運(yùn)載或傳送呈指令或數(shù)據(jù)結(jié)構(gòu)的形式的代碼且可由計(jì)算機(jī)存取、讀取和/或執(zhí)行的計(jì)算機(jī)可讀通信媒體來實(shí)現(xiàn)。
代碼可由一個或一個以上處理器執(zhí)行,例如一個或一個以上DSP、通用微處理器、 ASIC、現(xiàn)場可編程邏輯陣列(FPGA),或其它等效集成或離散邏輯電路。因此,如本文中所使用的術(shù)語“處理器”可指上述結(jié)構(gòu)或適合于實(shí)施本文中所描述的技術(shù)的任何其它結(jié)構(gòu)中的任一者。另外,在一些方面中,本文所描述的功能性可在經(jīng)配置以用于鑲嵌圖形圖像的專用軟件應(yīng)用程序或硬件模塊內(nèi)提供。因此,本發(fā)明還涵蓋包含實(shí)施本發(fā)明中描述的技術(shù)中的一者或一者以上的電路的多種集成電路裝置中的任一者。此電路可在單個集成電路芯片或在多個可互操作的集成電路芯片中提供。已描述各種方面。這些及其它方面均在所附權(quán)利要求書的范圍內(nèi)。
權(quán)利要求
1.一種方法,其包括確定位于待渲染的曲線上的多個頂點(diǎn)中的每一者的位置坐標(biāo); 分析所述多個頂點(diǎn)中的至少一部分的所述位置坐標(biāo);以及基于所述分析而丟棄所述多個頂點(diǎn)中的至少一者。
2.根據(jù)權(quán)利要求1所述的方法,其中分析所述多個頂點(diǎn)中的每一者的所述位置坐標(biāo)包括將所述多個頂點(diǎn)中的第一頂點(diǎn)的第一位置坐標(biāo)與所述多個頂點(diǎn)中的第二頂點(diǎn)的第二位置坐標(biāo)進(jìn)行比較,其中所述第一頂點(diǎn)緊在所述第二頂點(diǎn)之前;且丟棄至少一個頂點(diǎn)包括在所述第一和第二位置坐標(biāo)大體上相同時丟棄所述第二頂點(diǎn)。
3.根據(jù)權(quán)利要求2所述的方法,其中分析所述多個頂點(diǎn)中的每一者的所述位置坐標(biāo)進(jìn)一步包括將所述多個頂點(diǎn)中的第三頂點(diǎn)的第三位置坐標(biāo)與所述第二位置坐標(biāo)進(jìn)行比較,其中所述第二頂點(diǎn)緊在所述第三頂點(diǎn)之前;且丟棄至少一個頂點(diǎn)包括在所述第二和第三位置坐標(biāo)大體上相同時丟棄所述第三頂點(diǎn)。
4.根據(jù)權(quán)利要求3所述的方法,其進(jìn)一步包括在所述第一和第二位置坐標(biāo)并不大體上相同時,輸出所述第二頂點(diǎn)的所述位置坐標(biāo);以及在所述第二和第三位置坐標(biāo)并不大體上相同時,同時輸出所述第三頂點(diǎn)的所述位置坐標(biāo)。
5.根據(jù)權(quán)利要求1所述的方法,其中丟棄至少一個頂點(diǎn)包括丟棄大體上位于由先前頂點(diǎn)和后續(xù)頂點(diǎn)形成的直線上的至少一個頂點(diǎn)。
6.根據(jù)權(quán)利要求1所述的方法,其中分析所述多個頂點(diǎn)中的每一者的所述位置坐標(biāo)包括計(jì)算第一頂點(diǎn)的位置坐標(biāo)與第二頂點(diǎn)的位置坐標(biāo)之間的第一斜率;以及計(jì)算第二頂點(diǎn)的位置坐標(biāo)與第三頂點(diǎn)的位置坐標(biāo)之間的第二斜率;且丟棄至少一個頂點(diǎn)包括在所述第一和第二所計(jì)算斜率大體上相同時丟棄所述第二頂點(diǎn)。
7.根據(jù)權(quán)利要求6所述的方法,其中分析所述多個頂點(diǎn)中的每一者的所述位置坐標(biāo)進(jìn)一步包括將所述第一頂點(diǎn)的所述位置坐標(biāo)與所述第二頂點(diǎn)的所述位置坐標(biāo)進(jìn)行比較;且丟棄至少一個頂點(diǎn)包括在所述第一和第二位置坐標(biāo)大體上相同時丟棄所述第二頂點(diǎn)。
8.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括獲得指示當(dāng)前頂點(diǎn)在所述多個頂點(diǎn)中的順序位置的索引值,其中確定位置坐標(biāo)包括依據(jù)所述索引值而確定多個頂點(diǎn)中的每一者在顯示器坐標(biāo)空間中的位置坐標(biāo)。
9.根據(jù)權(quán)利要求8所述的方法,其中獲得所述索引值包括從圖形處理單元(GPU)的計(jì)數(shù)器獲得所述索引值。
10.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括渲染所述曲線以將所述曲線呈現(xiàn)到顯不器。
11.根據(jù)權(quán)利要求1所述的方法,其中所述頂點(diǎn)位于二維曲線上,且其中分析所述多個頂點(diǎn)中的每一者的所述位置坐標(biāo)包括用三維(3D)圖形處理單元 (GPU)的頂點(diǎn)著色器來分析所述多個頂點(diǎn)中的每一者的所述位置坐標(biāo);且其中丟棄所述多個頂點(diǎn)中的至少一者包括用所述3D GPU的所述頂點(diǎn)著色器基于所述分析而丟棄所述多個頂點(diǎn)中的至少一者。
12.根據(jù)權(quán)利要求1所述的方法,其中丟棄所述多個頂點(diǎn)中的至少一者包括丟棄所述多個頂點(diǎn)中映射到與所述多個頂點(diǎn)中的至少一個其它頂點(diǎn)相同的像素位置的至少一個頂點(diǎn)ο
13.一種裝置,其包括處理單元,所述處理單元確定位于待渲染的曲線上的多個頂點(diǎn)中的每一者的位置坐標(biāo); 分析所述多個頂點(diǎn)中的至少一部分的所述位置坐標(biāo);以及基于所述分析而丟棄所述多個頂點(diǎn)中的至少一者。
14.根據(jù)權(quán)利要求13所述的裝置,其中所述處理單元將所述多個頂點(diǎn)中的第一頂點(diǎn)的第一位置坐標(biāo)與所述多個頂點(diǎn)中的第二頂點(diǎn)的第二位置坐標(biāo)進(jìn)行比較,其中所述第一頂點(diǎn)緊在所述第二頂點(diǎn)之前;且在所述第一和第二位置坐標(biāo)大體上相同時丟棄所述第二頂點(diǎn)。
15.根據(jù)權(quán)利要求14所述的裝置,其中所述處理單元將所述多個頂點(diǎn)中的第三頂點(diǎn)的第三位置坐標(biāo)與所述第二位置坐標(biāo)進(jìn)行比較,其中所述第二頂點(diǎn)緊在所述第三頂點(diǎn)之前;且在所述第二和第三位置坐標(biāo)大體上相同時丟棄所述第三頂點(diǎn)。
16.根據(jù)權(quán)利要求15所述的裝置,其中所述處理單元在所述第一和第二位置坐標(biāo)并不大體上相同時,輸出所述第二頂點(diǎn)的所述位置坐標(biāo);以及在所述第二和第三位置坐標(biāo)并不大體上相同時,同時輸出所述第三頂點(diǎn)的所述位置坐標(biāo)。
17.根據(jù)權(quán)利要求13所述的裝置,其中所述處理單元丟棄大體上位于由先前頂點(diǎn)和后續(xù)頂點(diǎn)形成的直線上的至少一個頂點(diǎn)。
18.根據(jù)權(quán)利要求13所述的裝置,其中所述處理單元計(jì)算第一頂點(diǎn)的位置坐標(biāo)與第二頂點(diǎn)的位置坐標(biāo)之間的第一斜率;計(jì)算第二頂點(diǎn)的位置坐標(biāo)與第三頂點(diǎn)的位置坐標(biāo)之間的第二斜率;且丟棄至少一個頂點(diǎn)包括在所述第一和第二所計(jì)算斜率大體上相同時丟棄所述第二頂點(diǎn)ο
19.根據(jù)權(quán)利要求18所述的裝置,其中所述處理單元將所述第一頂點(diǎn)的所述位置坐標(biāo)與所述第二頂點(diǎn)的所述位置坐標(biāo)進(jìn)行比較;且在所述第一和第二位置坐標(biāo)大體上相同時丟棄所述第二頂點(diǎn)。
20.根據(jù)權(quán)利要求13所述的裝置,其中所述處理單元 獲得指示當(dāng)前頂點(diǎn)在所述多個頂點(diǎn)中的順序位置的索引值;且依據(jù)所述索引值而確定多個頂點(diǎn)中的每一者在顯示器坐標(biāo)空間中的位置坐標(biāo)。
21.根據(jù)權(quán)利要求20所述的裝置,其中所述處理單元包含產(chǎn)生所述索引值的計(jì)數(shù)器。
22.根據(jù)權(quán)利要求13所述的裝置,其中所述處理單元渲染所述曲線以將所述曲線呈現(xiàn)到顯示器。
23.根據(jù)權(quán)利要求13所述的裝置,其中所述頂點(diǎn)位于二維曲線上,且所述處理單元包括三維(3D)圖形處理單元(GPU)。
24.根據(jù)權(quán)利要求13所述的裝置,其中所述處理單元包括三維(3D)圖形處理單元 (GPU)的頂點(diǎn)著色器,所述頂點(diǎn)著色器進(jìn)一步包括位置坐標(biāo)計(jì)算模塊,其確定位于待渲染的曲線上的多個頂點(diǎn)中的每一者在顯示器坐標(biāo)空間中的位置坐標(biāo);以及頂點(diǎn)丟棄模塊,其分析所述多個頂點(diǎn)中的每一者的所述位置坐標(biāo)且基于所述分析而丟棄所述多個頂點(diǎn)中的至少一者。
25.根據(jù)權(quán)利要求13所述的裝置,其中所述裝置包括無線通信裝置。
26.根據(jù)權(quán)利要求13所述的裝置,其中所述裝置包括集成電路裝置。
27.根據(jù)權(quán)利要求13所述的裝置,其中丟棄所述多個頂點(diǎn)中的至少一者包括丟棄所述多個頂點(diǎn)中映射到與所述多個頂點(diǎn)中的至少一個其它頂點(diǎn)相同的像素位置的至少一個頂點(diǎn)ο
28.一種計(jì)算機(jī)可讀媒體,其包括指令,所述指令在執(zhí)行時致使至少一個處理器 確定位于待渲染的曲線上的多個頂點(diǎn)中的每一者的位置坐標(biāo);分析所述多個頂點(diǎn)中的至少一部分的所述位置坐標(biāo);以及基于所述分析而丟棄所述多個頂點(diǎn)中的至少一者。
29.根據(jù)權(quán)利要求觀所述的裝置,其中丟棄所述多個頂點(diǎn)中的至少一者包括丟棄所述多個頂點(diǎn)中映射到與所述多個頂點(diǎn)中的至少一個其它頂點(diǎn)相同的像素位置的至少一個頂點(diǎn)ο
30.根據(jù)權(quán)利要求觀所述的計(jì)算機(jī)可讀媒體,其中致使所述處理器分析所述多個頂點(diǎn)中的每一者的所述位置坐標(biāo)的指令包括致使所述處理器將所述多個頂點(diǎn)中的第一頂點(diǎn)的第一位置坐標(biāo)與所述多個頂點(diǎn)中的第二頂點(diǎn)的第二位置坐標(biāo)進(jìn)行比較的指令,其中所述第一頂點(diǎn)緊在所述第二頂點(diǎn)之前;且致使所述處理器丟棄至少一個頂點(diǎn)的指令包括致使所述處理器在所述第一和第二位置坐標(biāo)大體上相同時丟棄所述第二頂點(diǎn)的指令。
31.根據(jù)權(quán)利要求觀所述的計(jì)算機(jī)可讀媒體,其中致使所述處理器丟棄至少一個頂點(diǎn)的指令包括致使所述處理器丟棄大體上位于由先前頂點(diǎn)和后續(xù)頂點(diǎn)形成的直線上的至少一個頂點(diǎn)的指令。
32.根據(jù)權(quán)利要求觀所述的計(jì)算機(jī)可讀媒體,其中致使所述處理器分析所述多個頂點(diǎn)中的每一者的所述位置坐標(biāo)的指令包括致使所述處理器進(jìn)行以下操作的指令計(jì)算第一頂點(diǎn)的位置坐標(biāo)與第二頂點(diǎn)的位置坐標(biāo)之間的第一斜率;以及計(jì)算第二頂點(diǎn)的位置坐標(biāo)與第三頂點(diǎn)的位置坐標(biāo)之間的第二斜率;且致使所述處理器丟棄至少一個頂點(diǎn)的指令包括致使所述處理器在所述第一和第二所計(jì)算斜率大體上相同時丟棄所述第二頂點(diǎn)的指令。
33.根據(jù)權(quán)利要求32所述的計(jì)算機(jī)可讀媒體,其中致使所述處理器分析所述多個頂點(diǎn)中的每一者的所述位置坐標(biāo)的指令進(jìn)一步包括致使所述處理器將所述第一頂點(diǎn)的所述位置坐標(biāo)與所述第二頂點(diǎn)的所述位置坐標(biāo)進(jìn)行比較的指令;且致使所述處理器丟棄至少一個頂點(diǎn)的指令包括致使所述處理器在所述第一和第二位置坐標(biāo)大體上相同時丟棄所述第二頂點(diǎn)的指令。
34.根據(jù)權(quán)利要求觀所述的計(jì)算機(jī)可讀媒體,其進(jìn)一步包括致使所述處理器獲得指示當(dāng)前頂點(diǎn)在所述多個頂點(diǎn)中的順序位置的索引值的指令,其中致使所述處理器確定位置坐標(biāo)的指令包括致使所述處理器依據(jù)所述索引值而確定多個頂點(diǎn)中的每一者在顯示器坐標(biāo)空間中的位置坐標(biāo)的指令。
35.根據(jù)權(quán)利要求34所述的計(jì)算機(jī)可讀媒體,其中致使所述處理器獲得所述索引值的指令包括致使所述處理器從圖形處理單元(GPU)的計(jì)數(shù)器獲得所述索引值的指令。
36.根據(jù)權(quán)利要求觀所述的計(jì)算機(jī)可讀媒體,其進(jìn)一步包括致使所述處理器渲染所述曲線以將所述曲線呈現(xiàn)到顯示器的指令。
37.根據(jù)權(quán)利要求觀所述的計(jì)算機(jī)可讀媒體,其中致使所述處理器分析所述多個頂點(diǎn)中的每一者的所述位置坐標(biāo)的指令包括致使所述處理器用三維(3D)圖形處理單元(GPU)的頂點(diǎn)著色器來分析所述多個頂點(diǎn)中的每一者的所述位置坐標(biāo)的指令;且致使所述處理器丟棄所述多個頂點(diǎn)中的至少一者的指令包括致使所述處理器用所述 3D GPU的所述頂點(diǎn)著色器基于所述分析而丟棄所述多個頂點(diǎn)中的至少一者的指令。
38.一種裝置,其包括用于確定位于待渲染的曲線上的多個頂點(diǎn)中的每一者的位置坐標(biāo)的裝置;用于分析所述多個頂點(diǎn)中的至少一部分的所述位置坐標(biāo)的裝置;以及用于基于所述分析而丟棄所述多個頂點(diǎn)中的至少一者的裝置。
39.根據(jù)權(quán)利要求38所述的裝置,其中所述分析裝置將所述多個頂點(diǎn)中的第一頂點(diǎn)的第一位置坐標(biāo)與所述多個頂點(diǎn)中的第二頂點(diǎn)的第二位置坐標(biāo)進(jìn)行比較,其中所述第一頂點(diǎn)緊在所述第二頂點(diǎn)之前;且所述丟棄裝置在所述第一和第二位置坐標(biāo)大體上相同時丟棄所述第二頂點(diǎn)。
40.根據(jù)權(quán)利要求39所述的裝置,其中所述分析裝置將所述多個頂點(diǎn)中的第三頂點(diǎn)的第三位置坐標(biāo)與所述第二位置坐標(biāo)進(jìn)行比較,其中所述第二頂點(diǎn)緊在所述第三頂點(diǎn)之前;且所述丟棄裝置在所述第二和第三位置坐標(biāo)大體上相同時丟棄所述第三頂點(diǎn)。
41.根據(jù)權(quán)利要求40所述的裝置,其進(jìn)一步包括用于在所述第一和第二位置坐標(biāo)并不大體上相同時輸出所述第二頂點(diǎn)的所述位置坐標(biāo)的裝置;且其中所述輸出裝置在所述第二和第三位置坐標(biāo)并不大體上相同時同時輸出所述第三頂點(diǎn)的所述位置坐標(biāo)。
42.根據(jù)權(quán)利要求38所述的裝置,其中所述丟棄裝置丟棄大體上位于由先前頂點(diǎn)和后續(xù)頂點(diǎn)形成的直線上的至少一個頂點(diǎn)。
43.根據(jù)權(quán)利要求38所述的裝置,其中所述分析裝置計(jì)算第一頂點(diǎn)的位置坐標(biāo)與第二頂點(diǎn)的位置坐標(biāo)之間的第一斜率,且計(jì)算第二頂點(diǎn)的位置坐標(biāo)與第三頂點(diǎn)的位置坐標(biāo)之間的第二斜率;且所述丟棄裝置在所述第一和第二所計(jì)算斜率大體上相等時丟棄所述第二頂點(diǎn)。
44.根據(jù)權(quán)利要求43所述的裝置,其中所述分析裝置將所述第一頂點(diǎn)的所述位置坐標(biāo)與所述第二頂點(diǎn)的所述位置坐標(biāo)進(jìn)行比較;且所述丟棄裝置在所述第一和第二位置坐標(biāo)大體上相同時丟棄所述第二頂點(diǎn)。
45.根據(jù)權(quán)利要求38所述的裝置,其進(jìn)一步包括用于獲得指示當(dāng)前頂點(diǎn)在所述多個頂點(diǎn)中的順序位置的索引值的裝置,其中所述確定裝置依據(jù)所述索引值而確定多個頂點(diǎn)中的每一者在顯示器坐標(biāo)空間中的位置坐標(biāo)。
46.根據(jù)權(quán)利要求45所述的裝置,其進(jìn)一步包括用于在圖形處理單元(GPU)內(nèi)產(chǎn)生所述索引值的裝置。
47.根據(jù)權(quán)利要求38所述的裝置,其進(jìn)一步包括用于渲染所述曲線以將所述曲線呈現(xiàn)到顯示器的裝置。
48.根據(jù)權(quán)利要求38所述的裝置,其中所述曲線是二維曲線,且所述丟棄裝置包括三維(3D)圖形處理單元(GPU)的頂點(diǎn)著色器。
全文摘要
本發(fā)明描述用于在使用三維(3D)圖形硬件的二維(2D)圖形渲染期間移除頂點(diǎn)的技術(shù)。根據(jù)所描述的技術(shù),可在使用3D圖形硬件的2D圖形渲染期間移除一個或一個以上頂點(diǎn)。舉例來說,所述技術(shù)可通過丟棄在顯示器坐標(biāo)空間中具有與先前頂點(diǎn)大體上相同的位置坐標(biāo)的頂點(diǎn)來移除所述顯示器坐標(biāo)空間中的冗余頂點(diǎn)?;蛘呋蛄硗?,所述技術(shù)可移除位于直線上的過多頂點(diǎn)。移除所述冗余頂點(diǎn)或位于直線上的頂點(diǎn)允許較高效地利用GPU的硬件資源且增加所述GPU渲染圖像以供顯示的速度。
文檔編號G06T11/20GK102227752SQ200980148123
公開日2011年10月26日 申請日期2009年12月7日 優(yōu)先權(quán)日2008年12月9日
發(fā)明者杰·春松·云, 焦國方, 阿列克謝·V·布爾多 申請人:高通股份有限公司