書式
void gluNextContour( GLUtesselator* tess,
GLenum type )
delim $$
引き数
- tess
- テセレーションオブジェクト(gluNewTess を使って作る)を指定する。
- type
- 定義する経路の種類を指定する。 有効な値は GLU_EXTERIOR, GLU_INTERIOR, GLU_UNKNOWN, GLU_CCW, GLU_CW である。
説明
gluNextContour は複数の経路を持つポリゴンを記述するために使われる。 gluTessVertex を繰り返し呼び出して最初の経路を記述した後、 gluNextContour を呼び出すことで、前の経路が終わり、次の経路が これから始まることを示す。 その後に gluTessVertex を繰り返し呼び出すことで、 新しい経路を記述する。 この処理は、全ての経路を記述し終わるまで繰り返すことができる。type は gluTessVertex の後に続ける経路の種類を指定する。 経路の有効な種類は以下の通りである:
- GLU_EXTERIOR
- ポリゴンの外側の境界線を定義する外部経路。
- GLU_INTERIOR
- ポリゴン内部の境界線(穴など)を定義する内部経路。
- GLU_UNKNOWN
- 種類のわからない経路であり、ライブラリが解析を行って内部と外部 のどちらであるのかを判定する。
- GLU_CCW,
- GLU_CW
- 最初に定義された GLU_CCW 経路や GLU_CW 経路は 外側とみなされる。 それ以外の全ての経路は、最初の経路と同じ向き(時計回りまたは反時計回り) であれば外部経路とみなされ、異なる向きであれば内部経路と見なされる。
経路のひとつが GLU_CCW 型または GLU_CW 型であれば、 全ての経路は同じ型でなければならない(そうでない場合には、全ての GLU_CCW 経路および GLU_CW 経路は GLU_UNKNOWN 型に 変更される)。
実際には GLU_CCW 型と GLU_CW 型の間には違いがない点に 注意すること。
最初の経路を記述した後に、gluNextContour を呼んで最初の経路の 型を定義することができる。 最初の経路の前に gluNextContour が呼ばれていなければ、最初の 経路は GLU_EXTERIOR 型とされる。
この関数は古くて使用すべきではなく、後方互換性のためだけに提供されている。 gluNextContour の呼び出しは、gluTessEndContour と gluTessBeginContour を順に呼び出すことに置き換えられる。
使用例
三角形の穴が開いた四角形は、次のように記述できる:
gluBeginPolygon(tobj);
gluTessVertex(tobj, v1, v1);
gluTessVertex(tobj, v2, v2);
gluTessVertex(tobj, v3, v3);
gluTessVertex(tobj, v4, v4);
gluNextContour(tobj, GLU_INTERIOR);
gluTessVertex(tobj, v5, v5);
gluTessVertex(tobj, v6, v6);
gluTessVertex(tobj, v7, v7);
gluEndPolygon(tobj);