GLBEGIN(3G) UNIX Programmer's Manual GLBEGIN(3G)

glBegin, glEnd- delimit the vertices of a primitive or a group of like primitives

voidglBegin( GLenummode)

modeSpecifies 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.

voidglEnd( void )

glBeginandglEnddelimit the vertices that define a primi- tive or a group of like primitives.glBeginaccepts a single argument that specifies in which of ten ways the vertices are interpreted. Taking n as an integer count starting at one, and N as the total number of vertices specified, the interpretations are as follows:GL_POINTSTreats each vertex as a single point. Vertex n defines point n. N points are drawn.GL_LINESTreats each pair of vertices as an independent line segment. Vertices 2n-1 and 2n define line n. N/2 lines are drawn.GL_LINE_STRIPDraws a connected group of line seg- ments from the first vertex to the last. Vertices n and n + 1 define line n. N-1 lines are drawn.GL_LINE_LOOPDraws a connected group of line seg- ments from the first vertex to the last, then back to the first. Ver- tices n and n + 1 define line n. The last line, however, is defined by vertices N and 1. N lines are drawn.GL_TRIANGLESTreats each triplet of vertices as an MirBSD #10-current Printed 2021-12-07 1 GLBEGIN(3G) UNIX Programmer's Manual GLBEGIN(3G) independent triangle. Vertices 3n-2, 3n-1, and 3n define triangle n. N/3 triangles are drawn.GL_TRIANGLE_STRIPDraws a connected group of triangles. One triangle is defined for each ver- tex 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 trian- gles are drawn.GL_TRIANGLE_FANDraws a connected group of triangles. One triangle is defined for each ver- tex presented after the first two vertices. Vertices 1, n + 1, and n + 2 define triangle n. N-2 trian- gles are drawn.GL_QUADSTreats each group of four vertices as an independent quadrilateral. Ver- tices 4n-3, 4n-2, 4n-1, and 4n define quadrilateral n. N/4 quadrilaterals are drawn.GL_QUAD_STRIPDraws a connected group of quadrila- terals. One quadrilateral is defined for each pair of vertices presented after the first pair. Vertices 2n-1, 2n, 2n + 2, and 2n + 1 define quadri- lateral n. N/2-1 quadrilaterals are drawn. Note that the order in which vertices are used to construct a qua- drilateral from strip data is dif- ferent from that used with indepen- dent data.GL_POLYGONDraws a single, convex polygon. Ver- tices 1 through N define 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. MirBSD #10-current Printed 2021-12-07 2 GLBEGIN(3G) UNIX Programmer's Manual GLBEGIN(3G) 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 ver- tices 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).

GL_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.

glArrayElement(3G),glCallList(3G),glCallLists(3G),glColor(3G),glEdgeFlag(3G),glEvalCoord(3G),glEvalPoint(3G),glIndex(3G),glMaterial(3G),glNormal(3G),glTexCoord(3G),glVertex(3G)MirBSD #10-current Printed 2021-12-07 3