テセレーションする多角形の指定
次を使用して、テセレーションする多角形 (おそらく穴を含む) を指定します。
穴のないポリゴンの場合、仕様プロセスは OpenGL とまったく同じになります。
- gluBeginPolygon から始めます。
- 境界内の各頂点に対して gluTessVertex を呼び出します。
- gluEndPolygon の呼び出しで多角形を終了します。
多角形が複数の輪郭 (穴や穴内の穴を含む) で構成されている場合は、1 つずつ輪郭を指定し、それぞれの前に gluNextContour を付けます。 gluEndPolygon を呼び出すと、最終的なコンターの終了が通知され、テセレーションが開始されます。 最初のコンターの前に gluNextContour の 呼び出しを省略できます。 gluBeginPolygon 関数は、テセレーションされる多角形の指定を開始し、テセレーション オブジェクト tessobj を関連付けます。 使用するコールバック関数は、 gluTessCallback を使用してテセレーション オブジェクトにバインドする関数です。
gluTessVertex 関数は、テセレーションする多角形の頂点を指定します。 ポリゴン内の各頂点に対して gluTessVertex を呼び出します。 関数の tessobj パラメーターは、使用するテセレーション オブジェクトであり、 v には 3 次元の頂点座標が含まれており、 データ は 、GLU_VERTEXに関連付けられたコールバックに送信される任意のポインターです。 通常、 データ には頂点データ、テクスチャ座標、色情報、またはアプリケーションで必要なその他のものが含まれます。
gluNextContour 関数は、複数のコンターがテセレーションされるポリゴンの境界を構成する場合に、次のコンターの先頭をマークします。 関数の型パラメーターには、GLU_EXTERIOR、GLU_INTERIOR、GLU_CCW、GLU_CW、またはGLU_UNKNOWNを指定できます。 これらの定数は、テセレーションのヒントとしてのみ機能します。 正しく取得すると、テセレーションが速くなる可能性があります。 間違った場合は無視され、テセレーションは引き続き機能します。
穴がある多角形の場合、1 つの輪郭は外部の輪郭であり、他の輪郭は内部です。 gluBeginPolygon の直後に gluNextContour を呼び出さない場合、最初の輪郭は GLU_EXTERIOR 型であると見なされます。
GLU_CW と GLU_CCW は、時計回りと反時計回りの方向の多角形を示します。 時計回りと反時計回りのどちらを選択するかを選択することは、3つの次元で任意ですが、任意の平面には2つの異なる向きがあります。 GLU_CW 型と GLU_CCW型を 一貫して使用します。 使用するGLU_UNKNOWNがわからない場合は、 を使用します。
gluEndPolygon 関数は、多角形指定の終了を示します。 また、テセレーション オブジェクト tessobj を使用してテセレーションを開始できることを示します。