(僅是草稿,未做整理)
2.6 基本元素和頂點
在GL中,畫幾何對象,是通過一系列的座標組來完成,這些座標組包括頂點,可選法線(optionally normals),紋理座標。座標組是由頂點數組來定義(詳見2.8小節)。有七種的幾何對象以以下畫的方式完成:點(包括點角),連接線段(線帶),線段環,分離的線段,三角形連環,三角形扇,分離的三角形。
每一個頂點由兩個,三個或四個座標定義。另外,current normal,multiple current texturecoordinate sets, and current color 可能會用在處理頂點過程中。
在GL光線計算中會用到Normals。current normals是一個三維向量,由定義它的三個座標來設定。Texture coordinate決定著一個紋理映像如何映射到一個基本元素。多組Texture coordinate則可能用來定義把多紋理映像如何映射成基本元素。紋理單元的個數取決於實現平台,但至少需要兩個。此個數可以通過查詢MAX_TEXTURE_UNITS而得到。
顏色與每一個頂點相關聯。顏色主要由使用中色彩或由光線來決定。由光線決定,那麼還要看光線功能有沒有使能。Texture coordinate同樣與每一個頂點相關聯。多組Texture coordinate也可能與每一個頂點相關聯。圖2.2表明了輔助資料和轉換頂點產生的處理後的頂點之前的關聯。
Current值是GL狀態的一部分。頂點,normals和紋理座標是轉換值。顏色可能會會被光線所影響或替換。處理過程表明Current值是用於發送至GL的每一個頂點。
後續部分將討論關於頂點,normals,紋理座標,顏色發送到GL的方法及normals如何轉換和頂點如何映射到二維螢幕方法。
在顏色被賦於一個頂點,頂點所需的狀態是它的座標,normals,當前物體屬性(見2.12.2小節)和多紋理座標組。這是由於著色是一個頂點一個頂點操作。處理一個頂點包括頂點座標,著色和多紋理座標組。
圖2.3顯示了從一組頂點建立一個元素(點,線,或三角形)的操作。元素一理建立,就會被翻轉(剪輯)成viewing volume。這時可能改變元素,如頂點的座標,紋理座標和顏色。線上和三角形情況下,翻轉(剪輯)過程會插入新的頂點到基本元素。頂點所定義的光柵化的元素,有紋理座標和顏色與之相關聯。
2.6.1 基本元素類型
一組頂點送至GL,是通過DrawArrays 或者DrawElements(見2.8小節)來完成。頂點的數量主要是由頂點向量大小來決定。
命令中的參數mode,決定著所要畫的元素的類型。相關的模式和類型主要如下:
點,一系列獨立的點可能會被定義成POINTS。每一個頂點則定義成分離點或 點頂點
線帶,一個或多外相連的線段會被定義成LINE_STRIP模式。至少需要兩個頂點座標。這種情況下,第一個頂點表示第一個部分的起點,第二個頂點表示第一部分的終點和第二部分的起點。即,第i(i>1)個頂點表示第i部分的起始,及第i-1部分的結束。最後的頂點表示最後部分的終點。如果只有一個頂點那麼將不建立任何元素。
圖2.2 從頂點向量座標和current值建立處理後的頂點。只顯示了兩個紋理單元,但多紋理可以支援更多數量單元,當然這取決於實現平台。
圖2.3 元素的封裝和處理。
圖2.4 a三角形連環,b三角形扇,c獨立的三角形。頂點所給定的數值順序是以頂點向量內的數值順序的基準的。注在a和b中三角形的邊順序是由第一個三角形決定的。而在c中三角形的邊的順序是相互獨立的。
狀態所需包括先前所傳遞的頂點處理後的頂點(這樣,線段就可以從它到當前的頂點建立)和布爾型標識,此標識表明當前頂點是否是第一個頂點。
線環,模式用LINE_LOOP表示。環與線帶類似,只是環的最後部分,是最後的頂點加到第一個頂點。
所需狀態包括處理的第一個頂點,其他與線帶一樣。
分離線,獨立的線段,每部分由頂點對來定義。可能會以LINES模式出現。第一個兩個頂點,表明第一部分,接下的頂點對定義更多的部分。如果頂點個數為奇數,那麼要忽略最後一個頂點。狀態所需與線環一樣,但是用法不一樣:所要處理的頂點保持著第一個當前部分的終點,布爾標識,此標識表明頂點個數是奇數還是偶數(部分的起始或終點)。
三角形連環,是一組邊共用的三角形。由TRIANGLE_STRIP模式來表示。前三個頂點表示第一個三角形(它的順序也顯著通用的)。後續的每一個頂點和之前的兩個頂點定義新的三角形。如果少於三個頂點,那麼將沒有元素被建立,見圖2.4。
三角形連環所需的狀態包括一個標識(表明第一個三角形是否已經完成),兩個儲存處理後的頂點(如頂點A和頂點B),和一個指標表明哪一個儲存的頂點將要被下一個頂點所取代。指標最初指向頂點A,每一個後續的頂點切換使用些指標。因此,第一個頂點將儲存為頂點A,第二頂點儲存為頂點B,第三頂點儲存為頂點A,以下類推。第二個頂點後的任何頂點產生的一個三角形都是從頂點A,頂點B和當前頂點(按序)來完成。
三角形扇,與三角形連環相似,只有一個不同之處:第一個頂點之後,總是取代兩個儲存的頂點中的頂點B。用TRIANGLE_FAN模式來表示。
分離三角形,以TRIANGLES模式來表示。3i+1st, 3i+2nd和3i+3rd頂點(按順序)決定第i=0,1,2,...,n-1個三角形,將可以畫3i+k個頂點。k可以是0,1或2,如果k非0,那麼最後的k頂點將被忽略。對於每一個三角形,頂點A是頂點3i,頂點B是頂點3i+1,否則分離形就變成了三角形連環。
三角形的頂點的順序,不管是三角形連環,三角形扇或分離三角形,在光線和多邊形光柵過程中都是一致的。