NAMEglBegin,glEnd- delimit the vertices of a primitive or a group of like primitivesCSPECIFICATIONvoidglBegin( GLenummode)PARAMETERSmodeSpecifies the primitive or primitives that will be created from vertices presented betweenglBeginand the subsequentglEnd. 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, andGL_POLYGON.CSPECIFICATIONvoidglEnd( void )DESCRIPTIONglBeginandglEnddelimit the vertices that define a primitive or a group of like primitives.glBeginaccepts a single argument that specifies in which of ten ways the vertices are interpreted. Takingnas an integer count starting at one, andNas the total number of vertices specified, the interpretations are as follows:GL_POINTSTreats each vertex as a single point. Vertexndefines pointn.Npoints are drawn.GL_LINESTreats each pair of vertices as an independent line segment. Vertices2n-1and2ndefine linen.N/2lines are drawn.GL_LINE_STRIPDraws a connected group of line segments from the first vertex to the last. Verticesnandn+1define linen.N-1lines are drawn.GL_LINE_LOOPDraws a connected group of line segments from the first vertex to the last, then back to the first. Verticesnandn+1define linen. The last line, however, is defined by verticesNand1.Nlines are drawn.GL_TRIANGLESTreats each triplet of vertices as an independent triangle. Vertices3n-2,3n-1, and3ndefine trianglen.N/3triangles are drawn.GL_TRIANGLE_STRIPDraws a connected group of triangles. One triangle is defined for each vertex presented after the first two vertices. For oddn, verticesn,n+1, andn+2define trianglen. For evenn, verticesn+1,n, andn+2define trianglen.N-2triangles are drawn.GL_TRIANGLE_FANDraws a connected group of triangles. One triangle is defined for each vertex presented after the first two vertices. Vertices1,n+1, andn+2define trianglen.N-2triangles are drawn.GL_QUADSTreats each group of four vertices as an independent quadrilateral. Vertices4n-3,4n-2,4n-1, and4ndefine quadrilateraln.N/4quadrilaterals are drawn.GL_QUAD_STRIPDraws a connected group of quadrilaterals. One quadrilateral is defined for each pair of vertices presented after the first pair. Vertices2n-1,2n,2n+2, and2n+1define quadrilateraln.N/2-1quadrilaterals 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_POLYGONDraws a single, convex polygon. Vertices1throughNdefine this polygon. Only a subset of GL commands can be used betweenglBeginandglEnd. The commands areglVertex,glColor,glIndex,glNormal,glTexCoord,glEvalCoord,glEvalPoint,glArrayElement,glMaterial, andglEdgeFlag. Also, it is acceptable to useglCallListorglCallListsto execute display lists that include only the preceding commands. If any other GL command is executed betweenglBeginandglEnd, the error flag is set and the command is ignored. Regardless of the value chosen formode, there is no limit to the number of vertices that can be defined betweenglBeginandglEnd. Lines, triangles, quadrilaterals, 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 quadrilateral, and 3 for a polygon. Modes that require a certain multiple of vertices areGL_LINES(2),GL_TRIANGLES(3),GL_QUADS(4), andGL_QUAD_STRIP(2).ERRORSGL_INVALID_ENUMis generated ifmodeis set to an unaccepted value.GL_INVALID_OPERATIONis generated ifglBeginis executed between aglBeginand the corresponding execution ofglEnd.GL_INVALID_OPERATIONis generated ifglEndis executed without being preceded by aglBegin.GL_INVALID_OPERATIONis generated if a command other thanglVertex,glColor,glIndex,glNormal,glTexCoord,glEvalCoord,glEvalPoint,glArrayElement,glMaterial,glEdgeFlag,glCallList, orglCallListsis executed between the execution ofglBeginand the corresponding executionglEnd. Execution ofglEnableClientState,glDisableClientState,glEdgeFlagPointer,glTexCoordPointer,glColorPointer,glIndexPointer,glNormalPointer,glVertexPointer,glInterleavedArrays, orglPixelStoreis not allowed after a call toglBeginand before the corresponding call toglEnd, but an error may or may not be generated.SEEALSOglArrayElement,glCallList,glCallLists,glColor,glEdgeFlag,glEvalCoord,glEvalPoint,glIndex,glMaterial,glNormal,glTexCoord,glVertex