IRIS GL uses the begin/end paradigm but has a different function for each graphics primitive. For example, you probably use bgnpolygon and endpolygon to draw polygons, and bgnline and endline to draw lines. In OpenGL, you use the glBegin/glEnd structure for both. In OpenGL you draw most geometric objects by enclosing a series of functions that specify vertices, normals, textures, and colors between pairs of glBegin and glEnd calls. For example:
void glBegin( GLenum mode) ;
/* vertex list, colors, normals, textures, materials */
void glEnd( void );
The glBegin function takes a single parameter that specifies the drawing mode, and thus the primitive. Here's an OpenGL code sample that draws a polygon and then a line:
glBegin( GL_POLYGON ) ;
glVertex2f(20.0, 10.0);
glVertex2f(10.0, 30.0);
glVertex2f(20.0, 50.0);
glVertex2f(40.0, 50.0);
glVertex2f(50.0, 30.0);
glVertex2f(40.0, 10.0);
glEnd();
glBegin( GL_LINES ) ;
glVertex2i(100,100);
glVertex2i(500,500);
glEnd();
With OpenGL, you draw different geometric objects by specifying different parameters for glBegin. The following table lists the OpenGL glBegin parameters that correspond to equivalent IRIS GL functions.
IRIS GL Function | Value of glBegin Mode | Meaning |
---|---|---|
bgnpoint | GL_POINTS | Individual points. |
bgnline | GL_LINE_STRIP | Series of connected line segments. |
bgnclosedline | GL_LINE_LOOP | Series of connected line segments, with a segment added between first and last vertices. |
— | GL_LINES | Pairs of vertices interpreted as individual line segments. |
bgnpolygon | GL_POLYGON | Boundary of a simple convex polygon. |
— | GL_TRIANGLES | Triples of vertices interpreted as triangles. |
bgntmesh | GL_TRIANGLE_STRIP | Linked strips of triangles. |
— | GL_TRIANGLE_FAN | Linked fans of triangles. |
— | GL_QUADS | Quadruples of vertices interpreted as quadrilaterals. |
bgnqstrip | GL_QUAD_STRIP | Linked strips of quadrilaterals. |
For a detailed discussion of the differences between triangle meshes, strips, and fans, see Porting Triangles.
There is no limit to the number of vertices you can specify between a glBegin/glEnd pair.
In addition to specifying vertices inside a glBegin/glEnd pair, you can specify a current normal, current texture coordinates, and a current color. The following table lists the commands valid inside a glBegin/glEnd pair.
IRIS GL Function | OpenGL Function | Meaning |
---|---|---|
v2, v3, v4 | glVertex | Set vertex coordinates. |
RGBcolor, cpack | glColor | Set current color. |
color | glIndex | Set current color index. |
n3f | glNormal | Set normal vector coordinates. |
— | glEvalCoord | Evaluate enabled one- and two-dimensional maps. |
callobj | glCallList, glCallLists | Execute display list(s). |
t2 | glTexCoord | Set texture coordinates. |
— | glEdgeFlag | Control drawing edges. |
lmbind | glMaterial | Set material properties. |
Note If you use any OpenGL function other than those listed in the preceding table inside a glBegin/glEnd pair, you'll get unpredictable results, or possibly an error.