void glBegin( GLenummode) void glEnd(void)

*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**, and**GL_QUAD_STRIP**.**GL_POLYGON**

**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
2
*n*1 and 2*n*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.
*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
3
*n*2, 3*n*1, and 3*n*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 quadrilateral.
Vertices 4
*n*3, 4*n*2, 4*n*1, and 4*n*define quadrilateral*n*.*n*/4 quadrilaterals are drawn. **GL_QUAD_STRIP**- Draws a connected group of quadrilaterals. One quadrilateral is defined
for each pair of vertices presented after the first pair. Vertices
2
*n*1, 2*n*, 2*n*+2, and 2*n*+1 define quadrilateral*n*.*n*/21 quadrilaterals are drawn. Note that the order in which vertices are used to construct a quadrilateral 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 between

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 quadrilateral, and 3 for a
polygon. Modes that require a certain multiple of vertices are
` GL_LINES` (2),

is generated if**GL_INVALID_ENUM**is set to an unaccepted value.*mode*is generated if**GL_INVALID_OPERATION**`glBegin`is executed between a`glBegin`and the corresponding execution of`glEnd`.is generated if**GL_INVALID_OPERATION**`glEnd`is executed without being preceded by a`glBegin`.is generated if a command other than**GL_INVALID_OPERATION**`glVertex`,`glColor`,`glIndex`,`glNormal`,`glTexCoord`,`glEvalCoord`,`glEvalPoint`,`glArrayElement`,`glMaterial`,`glEdgeFlag`,`glCallList`, or`glCallLists`is executed between the execution of`glBegin`and the corresponding execution`glEnd`.Execution of

`glEnableClientState`,`glDisableClientState`,`glEdgeFlagPointer`,`glTexCoordPointer`,`glColorPointer`,`glIndexPointer`,`glNormalPointer`,`glVertexPointer`,`glInterleavedArrays`, or`glPixelStore`is not allowed after a call to`glBegin`and before the corresponding call to`glEnd`, but an error may or may not be generated.