指定要細分的多邊形
您可以透過以下方式指定要鑲嵌的多邊形(可能包含洞):
對於沒有洞的多邊形,規格程式與OpenGL完全相同:
- 從 gluBeginPolygon開始。
- 針對界限中的每個頂點呼叫 gluTessVertex。
- 以呼叫 gluEndPolygon 結束多邊形。
如果多邊形由多個輪廓組成,包括洞和洞中洞,您需要一個接一個地指定這些輪廓,並在每個輪廓前使用 gluNextContour進行標識。 當您呼叫 gluEndPolygon時,它會標示最終輪廓的結束,並開始進行圖形分割。 您可以在處理第一個輪廓前省略 gluNextContour 的呼叫。 gluBeginPolygon 函式開始設定要鑲嵌的多邊形,並將鑲嵌物件 tessobj與它關聯。 要使用的回呼函式是您系結至具有 gluTessCallback鑲嵌物件的回呼函式。
gluTessVertex 函式會指定要鑲嵌的多邊形中的頂點。 針對多邊形中的每個頂點呼叫 gluTessVertex。 函式的 tessobj 參數是要使用的鑲嵌物件,v 包含三維頂點座標,而 數據 是一個任意指標,會傳送至與 GLU_VERTEX相關聯的回呼。 一般而言,數據 包含頂點數據、紋理座標、色彩資訊,或應用程式可能需要的任何其他項目。
當多個輪廓構成要鑲嵌的多邊形邊界時,gluNextContour 函數會標示下一個輪廓的開頭。 函式的 類型 參數可以是 GLU_EXTERIOR、GLU_INTERIOR、GLU_CCW、GLU_CW或 GLU_UNKNOWN。 這些常數僅用作鑲嵌的提示。 如果你把這些拼對了,鑲嵌過程可能會加快。 如果你弄錯了,這些錯誤會被忽略,而鑲嵌仍然可以正常運作。
對於具有孔的多邊形,一個輪廓是外部輪廓,而另一個則為內部。 如果您在 gluBeginPolygon之後未立即呼叫 gluNextContour ,則會假設第一個輪廓的類型為 GLU_EXTERIOR。
GLU_CW 和 GLU_CCW 表示順時針和逆時針方向多邊形。 選擇順時針或逆時針在三維空間中是任意的,但在任何平面中,則有兩種不同的方向;一致地使用 GLU_CW 和 GLU_CCW 類型。 如果您不知道要使用哪一個,請使用 GLU_UNKNOWN。
gluEndPolygon 函式表示多邊形規格的結尾。 它也顯示鑲嵌可以開始使用鑲嵌物件tessobj。