OpenGL では、単純な凸多角形のみを直接表示できます。 多角形は、次の場合に単純です。
- エッジは頂点でのみ交差します。
- 重複する頂点はありません。
- 2 つのエッジが任意の頂点で完全に一致します。
単純な非Convex ポリゴンまたは穴を含む単純なポリゴンを表示するには、まずポリゴンを三角形化する必要があります (それらを凸多角形に分割します)。 このような細分化は、テッセレーション 呼ばれます。 GLU には、テッセレーションを実行する関数のコレクションが用意されています。 GLU テッセレーション関数は、非シンプルポリゴンを処理できないことに注意してください。このようなポリゴンを処理するための標準的な OpenGL メソッドはありません。
テッセレーションは多くの場合必要であり、かなり難しい場合があるため、このセクションでは GLU テッセレーション関数について詳しく説明します。 これらの関数は、穴を含む可能性のある任意の単純なポリゴンを入力として受け取り、三角形、三角形メッシュ、三角形ファンの組み合わせを返します。 メッシュやファンを扱いたくない場合は、テッセレーション関数が三角形のみを返すように指定できます。 ただし、メッシュとファンの情報によってパフォーマンスが向上します。 ポリゴン テッセレーション関数は、1 つ以上の輪郭を持つ凹状ポリゴンを三角形化します。
ポリゴン テッセレーション を使用するには
gluNewTessを使用テッセレーション オブジェクトを作成します。
gluTessCallBack を使用して、テッセレータによって生成された三角形を処理するために使用するコールバック関数を定義します。
gluBeginPolygon、gluTessVertex、gluNextContour、および gluEndPolygonを使用して、テッセレーションする穴のあるポリゴンまたは凹型ポリゴンを指定します。
ポリゴンの説明が完了すると、テッセレーション機能によって必要に応じてコールバック関数が呼び出されます。
不要なテッセレーション オブジェクトは、gluDeleteTessで破棄できます。
テッセレーション データの保存の詳細については、「コールバック関数の使用」を参照してください。