專利名稱:基于水平線掃描的三角形光柵化的實現的制作方法
技術領域:
本發明主要涉及到3D圖形芯片設計的三角形光柵化領域,特指基于水平線掃描 的三角形光柵化的實現。
背景技術:
光柵顯示器上顯示的圖形,稱之為光柵圖形。光柵顯示器可以看作是一個像素矩 陣,在光柵顯示器上顯示的任何一個圖形,實際上都是一些具有一種或多種顏色和灰度像 素的集合。由于對一個具體的光柵顯示器來說,像素個數是有限的,像素的顏色和灰度等級 也是有限的,像素是有大小的,所以光柵圖形只是近似的實際圖形。確定最佳逼近圖形的像 素集合,并用指定的顏色和灰度設置像素的過程稱為圖形的掃描轉換或光柵化。三角形的光柵化在3D圖形芯片的設計中占據重要位置。在OpenGL標準中,圖元 類型只有3種點、線段、三角形,可以利用大量三角形拼接成所需要的二維或三維圖形。三 角形光柵化的速度直接影響到3D圖形芯片的性能,因此需要盡可能加快三角形光柵化的 速度,同時顯示一幅圖像需要繪制大量的三角形,因此需要加快連續三角形的光柵化速度。目前采用的方法是先計算得到三條邊的邊界方程,然后利用邊界方程判斷某一 個像素點與三角形的位置關系,確定當前像素點是否在三角形內部。此種實現方法需要用 到大量的點乘運算,同時需要花費大量時間來排除不在三角形內部像素點。
發明內容
本發明要解決的問題就在于針對現有技術存在的技術難點,本發明提供了一種 結構相對簡單、能夠快速實現三角形光柵化并能快速實現連續三角形光柵化的實現方式。與現有技術相比,本發明的優點就在于
1、邏輯簡單本發明提出的三角形光柵化的實現結構并未采用很復雜的算法,都是比 較利于硬件實現的算法,帶來的好處就是邏輯簡單;
2、性能優良本發明提出的三角形光柵化實現方式可以快速完成三角形的光柵化,同 時由于采用了 FIFO,加快了連續三角形的光柵化速度;
3、使用方便本發明提出的三角形光柵化實現方式可重用性比較好,可以在嵌入式圖 形芯片設計中很方便的移植。
圖1是確定水平掃描線的左右端點示意圖2是本發明實現填充4個連續三角形的結果; 圖3是本發明提出的三角形填充算法實現結構示意圖。
具體實施例方式以下將結合附圖和具體實施例對本發明做進一步詳細說明。
如圖1所示,本發明的基于水平線掃描的三角形光柵化的實現,針對每一條水平 掃描線需要計算出此掃描線與三角形邊界的交點。處理方法是對當前水平掃描線,分別計 算與三角形三條邊(或延長線)的交點,然后根據三條邊的位置關系確定水平掃描線的左右 交點。如圖2所示,本發明的三角形光柵化實際運行效果,可以快速且平滑的實現三角 形的光柵化。如圖3所示,本發明的基于水平線掃描的三角形光柵化的實現,它包括三角形三 個頂點的順序調整、三邊與最低水平線的交點計算、三角形屬性增量計算、水平線與三條邊 (或延長線)的交點計算、水平線掃描邊界的確定、水平線裁剪、掃描線起始點屬性計算、水 平線填充等實現過程。輸入數據為三角形三個頂點的浮點坐標及每個坐標對應的屬性。首 先,調整頂點順序如圖1所示,將三角形三個頂點按照Y坐標的大小排列,同時確定三角形 主要邊的方向;然后再分別計算三角形三條邊(或其延長線)與最低水平掃描線的交點,同 時根據平面方程計算三角形屬性隨X和Y的增量;將最低掃描線與三條邊的交點坐標,三角 形屬性的增量,三角形三個點的坐標與最低點的屬性以及主要邊的方向寫入FIFO;從FIFO 讀出數據,計算掃描初始點的屬性,利用增量法計算每條水平掃描線與三角形三條邊的交 點;確定當前掃描線和下一條掃描線的左右邊界;進行水平線裁剪,將下一條掃描線裁剪 后的數據送入屬性計算模塊計算下一掃描線的起始點屬性,將當前掃描線裁剪后的數據送 入浮點轉整數單元;將當前掃描線當前左右邊界轉化成屏幕整數坐標;進行水平線掃描, 利用增量法生成水平掃描線上的每一個像素點的坐標和屬性,在進行水平線掃描過程中, 暫停計算掃描邊界的流水線,同時下一條掃描線的左右邊界和起始點屬性已經計算完成, 當前掃描線掃描結束,下一條掃描線馬上進入水平線掃描過程,當三角形所有的水平掃描 線均掃描結束時,當前三角形的光柵化結束,繼續讀取FIFO獲取下一個三角形的數據進行 光柵化。與傳統的三角形光柵化做法相比,本發明所采用的實現方法與傳統的實現方法耗 費的硬件資源相當,但本發明減少了由于判斷無需繪制的像素所帶來的時間損耗,特別是 對狹長三角形。傳統實現方式需要花費大量周期來判斷并不需繪制的像素,而本發明不需 要判斷,得到的水平掃描線上的像素均為需要繪制的像素。
權利要求
1.基于水平線掃描的三角形光柵化的實現,其特征為輸入包含三角形的三個頂點 單精度浮點格式的坐標(Xo, Yo) > (X1, Y1) > (χ2,γ2),三個頂點對應的單精度浮點格式的屬 性{R0,G0, B0j A0j Sqj TQj ZQ}、(R1j G1, Bp A1, S1,1\,Z1I、{R2,G2j B2j A2j S2j Τ2,ζ2},首先進行頂點 順序調整,確定最低點VB(XB,YB)、中間點VM(XM,Ym)、最高點VT(XT,Υτ),在交換頂點順序過程 中對應點的屬性也要交換,得到三角形的三條邊TB、TM、MB,其中主要邊為TB,利用叉乘積 (Xt-Xb) (Ym-Yb)-(Xm-Xb) (Yt-Yb)的符號確定主要邊在左邊還是右邊符號為1,主要邊在右 邊,反之主要邊在左邊;計算三條邊與最低點所在水平線的交點,分別計算三個交點坐標 (XTB, Ymin)、(Xmb, Yfflin)、(Χτ , Yfflin)(其中Ymin為Yb的整數上界轉化成單精度浮點數),將這三組 坐標和三條邊的斜率倒數寫入FIFO;計算三角形的屬性增量,采用平面方程來計算(以Z屬 性為例)三角形的三個頂點的X、Y坐標與Z坐標構成一個空間平面,分別計算出A、B、C即 可得到Z屬性分別沿X方向和Y方向的屬性增量,其余屬性類似處理,將屬性增量和最低點 屬性也寫入FIFO。
2.上一三角形光柵化結束后,讀FIFO,取出當前待處理的三角形數據,計算三角形掃 描線起始點的屬性,根據增量法計算當前三角形三邊與掃描線的交點X坐標,若當前掃描 線與TB、TM、MB邊的交點X坐標分別為XTB、XTM、Xm,那么下一條掃描線與三邊的交點為XTB+1/ KTB、XTM+1/KTM、Xm^IAmb;根據主要邊的位置確定水平線掃描線的左右端點,若主要邊在右邊 時,若當前掃描線YcuK=Ym時,左邊界為Xmb,右邊界為XTB,否則左邊界為XTM,右邊界為Xtb ; 若主要邊在左邊時,若當前掃描線YcuK=Ym時,左邊界為XTB,右邊界為Xmb,否則左邊界為 Xtb,右邊界為XTM,根據左右邊界的情況進行水平線裁剪,將裁剪后的浮點坐標轉換成屏幕 整數坐標,進行水平線掃描,生成像素點的坐標和屬性,一條掃描線掃描結束,允許下一條 掃描線進入水平線掃描,三角形所有掃描線掃描結束,讀取FIFO中下一三角形的數據進入 光柵化流程。
全文摘要
本發明公開了一種基于水平線掃描的三角形光柵化的實現方式。它包括三角形三個頂點的順序調整、三邊與最低水平線的交點計算、三角形屬性增量計算、水平線與三條邊(或延長線)的交點計算、水平線掃描邊界的確定、水平線裁剪、掃描線起始點屬性計算、水平線填充等實現過程。輸入為三角形三個頂點的坐標和屬性RGBASTZ,經過上述過程處理之后得到光柵化后的輸出。這種三角形光柵化的實現方式可以實現快速的連續三角形的填充,輸出三角形內部各個點的屏幕坐標和對應屬性RGBASTZ。
文檔編號G06F17/50GK102004832SQ20101055585
公開日2011年4月6日 申請日期2010年11月22日 優先權日2010年11月22日
發明者周敏龍, 焦永, 陳寶民 申請人:長沙景嘉微電子有限公司