void glEvalMesh1(GLenum mode,
GLint i1,
GLint i2)
| mode | In glEvalMesh1, specifies whether to compute a one- dimensional mesh of points or lines. Symbolic constants GL_POINT and GL_LINE are accepted. |
| i1, i2 | Specify the first and last integer values for grid domain variable i. |
void glEvalMesh2(GLenum mode,
GLint i1,
GLint i2,
GLint j1,
GLint j2)
| mode | In glEvalMesh2, specifies whether to compute a two- dimensional mesh of points, lines, or polygons. Symbolic constants GL_POINT, GL_LINE, and GL_FILL are accepted. |
| i1, i2 | Specify the first and last integer values for grid domain variable i. |
| j1, j2 | Specify the first and last integer values for grid domain variable j. |
In the one-dimensional case, glEvalMesh1, the mesh is generated as if the following code fragment were executed:
glBegin(type);
for (i = i1; i <= i2; i += 1)
glEvalCoord1(i * Δu + u1)
glEnd();
where
Δu = (u2-u1)/n
and n, u1, and u2 are the
arguments to the most recent glMapGrid1
command. type is GL_POINTS if mode is GL_POINT, or
GL_LINES if mode is GL_LINE. The one absolute numeric
requirement is that if
In the two-dimensional case, glEvalMesh2, let
where n, u1, u2, m, v1, and v2 are the arguments to the most recent glMapGrid2 command. Then, if mode is GL_FILL, the glEvalMesh2 command is equivalent to:
for (j = j1; j < j2; j += 1) {
glBegin(GL_QUAD_STRIP);
for (i = i1; i <= i2; i += 1) {
glEvalCoord2(i * Δu + u1, j * Δv + v1);
glEvalCoord2(i * Δu + u1, (j+1) * Δv + v1);
}
glEnd();
}
If mode is GL_LINE, then a call to glEvalMesh2 is equivalent to:
for (j = j1; j <= j2; j += 1) {
glBegin(GL_LINE_STRIP);
for (i = i1; i <= i2; i += 1)
glEvalCoord2(i * Δu + u1, j * Δv + v1);
glEnd();
}
for (i = i1; i <= i2; i += 1) {
glBegin(GL_LINE_STRIP);
for (j = j1; j <= j1; j += 1)
glEvalCoord2(i * Δu + u1, j * Δv + v1);
glEnd();
}
And finally, if mode is GL_POINT, then a call to glEvalMesh2 is equivalent to:
glBegin(GL_POINTS);
for (j = j1; j <= j2; j += 1) {
for (i = i1; i <= i2; i += 1) {
glEvalCoord2(i * Δu + u1, j * Δv + v1);
}
}
glEnd();
In all three cases, the only absolute numeric requirements
are that if
GL_INVALID_OPERATION is generated if glEvalMesh is executed between the execution of glBegin and the corresponding execution of glEnd.