E
glEvalMesh
Chapter 5
144
and n, u
1
, and u
2
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 i=n, then the value computed from i−∆u+u
1
is exactly u
2
.
In the two-dimensional case, glEvalMesh2, let
∆u = (u
2
− u
1
) / n
∆v = (v
2
− v
1
) / m,
where n, u
1
, u
2
, m, v
1
, and v
2
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 + u
1
, j−∆v + v
1
);
glEvalCoord2(i − ∆u + u
1
, (j + 1) − ∆v + v
1
);
}
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 + u
1
, j−∆v + v
1
);
glEnd();
}
for (i = i1; i ≤i2; i += 1) {
glBegin(GL_LINE_STRIP);
for (j = j1; j ≤ j1; j += 1)
glEvalCoord2(i − ∆u + u
1
, j−∆v + v
1
);
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 + u
1
, j − ∆v + v
1
);
}
}
glEnd();
In all three cases, the only absolute numeric requirements are that if i=n, then the value
computed from i − ∆u + u
1
is exactly u
2
, and if j=m, then the value computed from j − ∆v
+ v
1
is exactly v
2
.
Errors
• GL_INVALID_ENUM is generated if mode is not an accepted value.