書式
void gluTessBeginPolygon( GLUtesselator* tess,
GLvoid* data )
delim $$
引き数
- tess
- テセレーションオブジェクト(gluNewTess を使って作る)を 指定する。
- data
- ユーザ指定のポリゴンデータを指すポインタを指定する。
説明
gluTessBeginPolygon と gluTessEndPolygon は、 凸であるポリゴン、非凸であるポリゴン、自己干渉しているポリゴンの定義を 区切る。 gluTessBeginPolygon/gluTessEndPolygon のペアに 挟まれる部分では、 gluTessBeginContour/gluTessEndContour をひとつ 以上呼び出さなければならない。 それぞれの経路の中には、0 個以上の gluTessVertex がある。 この頂点群は閉じた経路を指定する(各経路の最後の頂点は、自動的に 最初の頂点と結ばれる)。 詳しくは gluTessVertex, gluTessBeginContour, gluTessEndContour の項目を参照すること。data はユーザが定義したデータ構造を指すポインタである。 適切なコールバックが指定されていれば(gluTessCallback を参照)、 このポインタはコールバック関数に返される。 したがって、このデータ構造は、ポリゴン別の情報を格納するための便利な 方法である。
一度 gluTessEndPolygon が呼ばれると、ポリゴンは テセレーション処理され、得られた三角形群はコールバックを通して記述される。 コールバック関数の説明については、gluTessCallback を参照すること。
使用例
三角形の穴が開いた四角形は以下のように記述できる:
gluTessBeginPolygon(tobj, NULL);
gluTessBeginContour(tobj);
gluTessVertex(tobj, v1, v1);
gluTessVertex(tobj, v2, v2);
gluTessVertex(tobj, v3, v3);
gluTessVertex(tobj, v4, v4);
gluTessEndContour(tobj);
gluTessBeginContour(tobj);
gluTessVertex(tobj, v5, v5);
gluTessVertex(tobj, v6, v6);
gluTessVertex(tobj, v7, v7);
gluTessEndContour(tobj);
gluTessEndPolygon(tobj);