鑲嵌多邊形
OpenGL 只能直接顯示簡單的凸面多邊形。 如果:
- 邊緣只會交集於頂點。
- 沒有重複的頂點。
- 正好兩個邊緣在任何頂點相遇。
若要顯示簡單的非連續多邊形或包含孔的簡單多邊形,您必須先將多邊形三角化(將它們細分為凸面多邊形)。 這種細分稱為 鑲嵌。 GLU 提供執行鑲嵌的函式集合。 請注意,GLU 鑲嵌函式無法處理非簡單多邊形;沒有標準 OpenGL 方法可處理這類多邊形。
因為鑲嵌通常是必要的,而且可能相當棘手,本節會詳細說明 GLU 鑲嵌函式。 這些函式會接受輸入任意簡單的多邊形,其中可能包含孔,而且會傳回三角形、三角形網格和三角形風扇的一些組合。 如果您不想處理網格或風扇,您可以指定鑲嵌函式只傳回三角形。 不過,網格和風扇資訊可改善效能。 多邊形鑲嵌函式會三角化具有一個或多個輪廓的圓面多邊形。
使用多邊形鑲嵌
建立具有 gluNewTess的鑲嵌物件。
使用 gluTessCallBack 來定義您將用來處理鑲嵌器所產生的三角形的回呼函式。
使用 gluBeginPolygon、gluTessVertex、gluNextContour,以及 gluEndPolygon,指定具有孔或圓面多邊形的多邊形要鑲嵌。
多邊形描述完成時,鑲嵌設備會視需要叫用回呼函式。
您可以使用 gluDeleteTess 來終結不需要的鑲嵌物件,。