GLBEGIN
Section: Misc. Reference Manual Pages (3G)
索引
xjman
名前
glBegin, glEnd
- プリミティブ内の頂点やプリミティブ的グループ内の頂点を区切る
書式
void glBegin(
GLenum mode )
delim $$
引き数
- mode
-
glBegin とその後にある glEnd の間に
現れる頂点から作られるプリミティブまたはプリミティブ群を指定する。
次の10種類の定数を指定できる:
GL_POINTS,
GL_LINES,
GL_LINE_STRIP,
GL_LINE_LOOP,
GL_TRIANGLES,
GL_TRIANGLE_STRIP,
GL_TRIANGLE_FAN,
GL_QUADS,
GL_QUAD_STRIP,
GL_POLYGON.
書式
void glEnd( void )
説明
glBegin と glEnd はプリミティブやプリミティブ群の
ようなグループを定義する頂点を区切る。
glBegin には引き数をひとつ指定でき、これは頂点群の解釈のしかた
を10種類の中から指定する。
$n$ は 1 から始まる整数で、$N$ は指定した頂点数の合計である。
解釈は以下のように行われる:
- GL_POINTS
-
各頂点を単独の点とみなす。
頂点 $n$ が点 $n$ を定義する。
$N$ 個の点が描画される。
- GL_LINES
-
頂点の対をそれぞれ独立した線分とみなす。
頂点 $2n^-^1$ と頂点 $2n$ が線分 $n$ を定義する。
$N/2$ 個の線分が描画される。
- GL_LINE_STRIP
-
最初の頂点から最後の頂点まで、連続した線分を描画する。
頂点 $n$ と頂点 $n~+~1$ が線分 $n$ を定義する。
$N^-^1$ 個の頂点が描画される。
- GL_LINE_LOOP
-
最初の頂点から最後の頂点まで、連続した線分を描画し、さらに
最後の頂点と最初の頂点を結ぶ。
頂点 $n$ と頂点 $n~+~1$ が線分 $n$ を定義する。
ただし最後の線分は頂点 $N$ と頂点 $1$ によって定義される。
$N$ 個の頂点が描画される。
- GL_TRIANGLES
-
頂点 3 つを一組として、それぞれを三角形とみなす。
頂点 $3n^-^2$, $3n^-^1$, $3n$ が三角形 $n$ を定義する。
$N/3$ 個の三角形が描画される。
- GL_TRIANGLE_STRIP
-
互いに隣接する三角形群を描画する。
ひとつの三角形は、最初のふたつの頂点が示された後のそれぞれの頂点に
ついて定義される。
$n$ が奇数の場合は頂点 $n$, $n~+~1$, $n~+~2$ が三角形 $n$ を定義する。
$n$ が偶数の場合は頂点 $n~+~1$, $n$, $n~+~2$ が三角形 $n$ を定義する。
$N^-^2$ 個の三角形が描画される。
- GL_TRIANGLE_FAN
-
互いに隣接する三角形群を描画する。
ひとつの三角形は、最初のふたつの頂点が示された後のそれぞれの頂点に
ついて定義される。
頂点 $1$, $n~+~1$, $n~+~2$ が三角形 $n$ を定義する。
$N^-^2$ 個の三角形が描画される。
- GL_QUADS
-
頂点 3 つを一組として、それぞれを独立した四角形とみなす。
頂点 $4n^-^3$, $4n^-^2$, $4n^-^1$, $4n$ が四角形 $n$ を定義する。
$N/4$ 個の四角形が描画される。
- GL_QUAD_STRIP
-
互いに隣接する四角形群を描画する。
ひとつの四角形は、最初の頂点対が示された後のそれぞれの頂点対に
ついて定義される。
頂点 $2n^-^1$, $2n$, $2n~+~2$, $2n~+~1$ は四角形 $n$ を定義する。
$N/2^-^1$ 個の四角形が描画される。
単なる点群から四角形を作るために使われる頂点の順序は、
独立したデータとして使う場合の順序と異なることに注意すること。
- GL_POLYGON
-
凸な多角形をひとつ描画する。
頂点 $1$ から頂点 $N$ がこの多角形を定義する。
glBegin と glEnd の間では、GL コマンドの一部
しか使えない。
使えるコマンドは
glVertex,
glColor,
glIndex,
glNormal,
glTexCoord,
glEvalCoord,
glEvalPoint,
glArrayElement,
glMaterial,
glEdgeFlag
である。
また、前に実行したコマンドだけが含まれるディスプレイリストを
glCallList または glCallLists を使って
実行することもできる。
glBegin と glEnd の間で他の GL コマンドが実行された
場合には、エラーフラグが設定され、コマンドは無視される。
mode の値として選んだ値にかかわらず、
glBegin と glEnd の間で定義できる頂点の数は無制限であ
る。
指定が不十分な線分、三角形、四角形、多角形は描画されない。
指定が不完全となるのは、
指定された頂点数が少なすぎてプリミティブをひとつも作れない場合や、
指定した頂点数がプリミティブで必要な頂点の倍数になっていない場合
である。
不完全なプリミティブは無視されるが、残りのプリミティブは描画される。
各プリミティブに対して最低限指定する必要がある頂点数は以下の通りである:
点では 1, 線分では 2, 三角形では 3, 四角形では 4, 多角形では 3。
頂点数が何らかの数の倍数になっている必要があるモードは
GL_LINES (2 の倍数),
GL_TRIANGLES (3 の倍数),
GL_QUADS (4 の倍数),
GL_QUAD_STRIP (2 の倍数)
である。
エラー
mode に不正な値を指定すると GL_INVALID_ENUM エラーが起こる。
glBegin とその対になる glEnd の間に
glBegin が実行されると GL_INVALID_OPERATION エラー
となる。
glBegin をまだ実行していないのに glEnd を実行すると
GL_INVALID_OPERATION エラーとなる。
glBegin とその対になる glEnd の間に次に示す以外の
コマンドが実行されると GL_INVALID_OPERATION エラーとなる:
glVertex,
glColor,
glIndex,
glNormal,
glTexCoord,
glEvalCoord,
glEvalPoint,
glArrayElement,
glMaterial,
glEdgeFlag,
glCallList,
glCallLists.
glBegin とこれに対応する glEnd の間に次の関数を実行す
ることは許されていない:
glEnableClientState,
glDisableClientState,
glEdgeFlagPointer,
glTexCoordPointer,
glColorPointer,
glIndexPointer,
glNormalPointer,
glVertexPointer,
glInterleavedArrays,
glPixelStore。
しかし、エラーは起こるかもしれないし起こらないかもしれない。
関連項目
glArrayElement(3G),
glCallList(3G),
glCallLists(3G),
glColor(3G),
glEdgeFlag(3G),
glEvalCoord(3G),
glEvalPoint(3G),
glIndex(3G),
glMaterial(3G),
glNormal(3G),
glTexCoord(3G),
glVertex(3G)
Index
- 名前
-
- 書式
-
- 引き数
-
- 書式
-
- 説明
-
- エラー
-
- 関連項目
-
Time: 07:01:04 GMT, January 12, 2009