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