fglBegin(3G)

fglBegin, fglEnd - delimit the vertices of a primitive or a group of like primitives

As shipped in IRIX 6.5. First release of IRIX 6.5.

NAME
     fglBegin, fglEnd - delimit the vertices of a primitive or a group of like
     primitives


FORTRAN SPECIFICATION
     SUBROUTINE fglBegin( INTEGER*4 mode )


PARAMETERS
     mode  Specifies the primitive or primitives that will be created from
           vertices presented between fglBegin and the subsequent fglEnd.  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.

FORTRAN SPECIFICATION
     SUBROUTINE fglEnd( )


DESCRIPTION
     fglBegin and fglEnd delimit the vertices that define a primitive or a
     group of like primitives.  fglBegin accepts a single argument that
     specifies 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_POINTS Treats each vertex as a single point.  Vertex n defines point
               n.  N points are drawn.

     GL_LINES  Treates 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
               Treates 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
               quadrilateral.  Vertices 4n-3, 4n-2, 4n-1, and 4n 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 2n-1, 2n, 2n+2, and 2n+1 define quadrilateral
               n.  N/2-1 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.

     Only a subset of GL commands can be used between fglBegin and fglEnd.
     The commands are fglVertex, fglColor, fglIndex, fglNormal, fglTexCoord,
     fglEvalCoord, fglEvalPoint, fglMaterial, and fglEdgeFlag.  Also, it is
     acceptable to use fglCallList or fglCallLists to execute display lists
     that include only the preceding commands.  If any other GL command is
     called between fglBegin and fglEnd, the error flag is set and the command
     is ignored.

     Regardless of the value chosen for mode, there is no limit to the number
     of vertices that can be defined between fglBegin and fglEnd.  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 are
     GL_LINES (2), GL_TRIANGLES (3), GL_QUADS (4), and GL_QUAD_STRIP (2).

ERRORS
     GL_INVALID_ENUM is generated if mode is set to an unaccepted value.

     GL_INVALID_OPERATION is generated if a command other than fglVertex,
     fglColor, fglIndex, fglNormal, fglTexCoord, fglEvalCoord, fglEvalPoint,
     fglMaterial, fglEdgeFlag, fglCallList, or fglCallLists is executed
     between the execution of fglBegin and the corresponding execution of
     fglEnd.

     GL_INVALID_OPERATION is generated if fglEnd is executed before the
     corresponding fglBegin is executed, or if fglBegin is executed within a
     fglBegin/fglEnd sequence.


SEE ALSO
     fglCallList, fglCallLists, fglColor, fglEdgeFlag, fglEvalCoord,
     fglEvalPoint, fglIndex, fglMaterial, fglNormal, fglTexCoord, fglVertex