Keep the following points in mind when porting polygons and quadrilaterals:
If your IRIS GL code uses these functions, you'll have to rewrite the code using glBegin(GL_POLYGON).
The following table lists the IRIS GL polygon drawing functions and their equivalent OpenGL functions.
IRIS GL Function | OpenGL Function | Meaning |
---|---|---|
bgnpolygon endpolygon |
glBegin(GL_POLYGON) glEnd | Vertices define boundary of a simple convex polygon. |
— | glBegin(GL_QUADS) glEnd |
Interpret quadruples of vertices as quadrilaterals. |
bgnqstrip endqstrip |
glBegin(GL_QUAD _STRIP) glEnd |
Interpret vertices as linked strips of quadrilaterals. |
— | glEdgeFlag | |
polymode | glPolygonMode | Set polygon drawing mode. |
rect rectf |
glRect | Draw a rectangle. |
sbox sboxf |
— | Draw a screen-aligned rectangle. |
The OpenGL function glPolygonMode lets you specify which side of a polygon (the back or the front) the mode applies to. Its syntax is:
void glPolygonMode( GLenum face, GLenum mode );
where face is one of:
GL_FRONT | mode which applies to front-facing polygons |
GL_BACK | mode which applies to back-facing polygons |
GL_FRONT_AND_BACK | mode which applies to both front- and back-facing polygons |
The GL_FRONT_AND_BACK mode is equivalent to the IRIS GL polymode function. The following table lists IRIS GL polygon modes and their equivalent OpenGL modes.
IRIS GL Mode | OpenGL Mode | Meaning |
---|---|---|
PYM_POINT | GL_POINT | Draw vertices as points. |
PYM_LINE | GL_LINE | Draw boundary edges as line segments. |
PYM_FILL | GL_FILL | Draw polygon interior filled. |
PYM_HOLLOW | — | Fill only interior pixels at the boundaries. |
When porting IRIS GL polygon stipples, keep the following points in mind:
For more information on porting polygon stipples, see Porting Pixel Operations.
The following table lists IRIS GL polygon stipple functions and their equivalent OpenGL functions.
IRIS GL Function | OpenGL Function | Meaning |
---|---|---|
defpattern | glPolygonStipple | Set the stipple pattern. |
setpattern | — | OpenGL keeps only one polygon stipple pattern. |
getpattern | glGetPolygonStipple | Return the stipple bitmap (used to return an index). |
In OpenGL, you enable and disable polygon stippling by passing GL_POLYGON_STIPPLE as a parameter for glEnable and glDisable.
The following OpenGL code sample demonstrates polygon stippling:
void display(void)
{
GLubyte fly[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60,
0x04, 0x60, 0x06, 0x20, 0x04, 0x30, 0x0C, 0x20,
0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20,
0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 0x80, 0xCC,
0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30,
0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0,
0x03, 0x31, 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0,
0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30,
0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 0x23, 0x08,
0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0c, 0x08,
0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08
};
GLubyte halftone[] = {
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55
};
glClear (GL_COLOR_BUFFER_BIT);
/* draw all polygons in white*/
glColor3f (1.0, 1.0, 1.0);
/* draw one solid, unstippled rectangle,*/
/* then two stippled rectangles*/
glRectf (25.0, 25.0, 125.0, 125.0);
glEnable (GL_POLYGON_STIPPLE);
glPolygonStipple (fly);
glRectf (125.0, 25.0, 225.0, 125.0);
glPolygonStipple (halftone);
glRectf (225.0, 25.0, 325.0, 125.0);
glDisable (GL_POLYGON_STIPPLE);
glFlush ();
}
In IRIS GL, you use concave(TRUE) and then bgnpolygon to draw concave polygons. The OpenGL GLU includes functions you can use to draw concave polygons.
The following table lists the OpenGL functions for drawing tessellated polygons.
OpenGL GLU Function | Meaning |
---|---|
gluNewTess | Create a new tessellation object. |
gluDeleteTess | Delete a tessellation object. |
gluTessCallback | — |
gluBeginPolygon | Begin the polygon specification. |
gluTessVertex | Specify a polygon vertex in a contour. |
gluNextContour | Indicate that the next series of vertices describe a new contour. |
gluEndPolygon | End the polygon specification. |