void glBegin(GLenummode)

*mode*- Specifies the primitive or primitives that will be created
from vertices presented between
**glBegin**and the subsequent**glEnd**. Ten symbolic constants are accepted:**GL_POINTS**,**GL_LINES**,**GL_LINE_STRIP**,**GL_LINE_LOOP**,**GL_TRIANGLES**,**GL_TRIANGLE_STRIP**,**GL_TRIANGLE_FAN**,**GL_QUADS**,**GL_QUAD_STRIP**, and**GL_POLYGON**.

void glEnd(void)

**GL_POINTS**-
Treats each vertex as a single point. Vertex
*n*defines point*n*.*N*points are drawn. **GL_LINES**-
Treats each pair of vertices as an independent line segment. Vertices
*2n-1*and*2n*define line*n*.*N/2*lines are drawn. **GL_LINE_STRIP**-
Draws a connected group of line segments from the first vertex to the
last. Vertices
*n*and*n+1*define line*n*.*N-1*lines are drawn. **GL_LINE_LOOP**-
Draws a connected group of line segments from the first vertex to the
last, then back to the first. Vertices
*n*and*n+1*define line*n*. The last line however, is defined by vertices*N*and*1*.*N*lines are drawn. **GL_TRIANGLES**-
Treats each triplet of vertices as an independent triangle. Vertices
*3n-2*,*3n-1*, and*3n*define triangle*n*.*N/3*triangles are drawn. **GL_TRIANGLE_STRIP**-
Draws a connected group of triangles. One triangle is defined for
each vertex presented after the first two vertices. For odd
*n*, vertices*n*,*n+1*, and*n+2*define triangle*n*. For even*n*, vertices*n+1*,*n*, and*n+2*define triangle*n*.*N-2*triangles are drawn. **GL_TRIANGLE_FAN**-
Draws a connected group of triangles. One triangle is defined for
each vertex presented after the first two vertices. Vertices
*1*,*n+1*, and*n+2*define triangle*n*.*N-2*triangles are drawn. **GL_QUADS**-
Treats each group of four vertices as an independent quadriliteral.
Vertices
*4n-3*,*4n-2*,*4n-1*, and*4n*define quadriliteral*n*.*N/4*quadriliterals are drawn. **GL_QUAD_STRIP**-
Draws a connected group of quadriliterals. One quadriliteral is defined
for each pair of vertices presented after the first pair. Vertices
*2n-1*,*2n*,*2n+2*, and*2n+1*define quadriliteral*n*.*N/2-1*quadriliterals are drawn. Note that the order in which vertices are used to construct a quadriliteral from strip data is different from that used with independent data. **GL_POLYGON**-
Draws a single, convex polygon. Vertices
*1*through*N*define this polygon.

Regardless of the value chosen for *mode*, there is no limit to the number
of vertices that can be defined betwen **glBegin** and **glEnd**.
Lines, triangles, quadriliterals, and polygons that are incompletely specified
are not drawn. Incomplete specification results when either too few vertices
are provided to specify even a single primitive or when an incorrect multiple
of vertices is specified. The incomplete primitive is ignored; the rest are
drawn.

The minimum specification of vertices for each primitive is as follows: 1 for a
point, 2 for a line, 3 for a triangle, 4 for a quadriliteral, and 3 for a
polygon. Modes that require a certain multiple of vertices are **GL_LINES**
(2), **GL_TRIANGLES** (3), **GL_QUADS** (4), and **GL_QUAD_STRIP**
(2).

**GL_INVALID_OPERATION** is generated if a command other than
**glVertex**,
**glColor**,
**glIndex**,
**glNormal**,
**glTexCoord**,
**glEvalCoord**,
**glEvalPoint**,
**glMaterial**,
**glEdgeFlag**,
**glCallList** or
**glCallLists** is called between
**glBegin** and the corresponding **glEnd**.

**GL_INVALID_OPERATION** is generated if **glEnd** is called before the
corresponding **glBegin** is called.

back to the **OpenGL index page**

© *1995 Uwe Behrens. All rights reserved.*