glEvalMesh1,
glEvalMesh2
[New
- Windows 95, OEM Service Release 2]
The glEvalMesh1
and glEvalMesh2 functions compute a one- or two-dimensional grid of
points or lines.
void glEvalMesh1(
GLenum mode, |
|
GLint i1, |
|
GLint i2 |
|
); |
|
Parameters
mode
In glEvalMesh1,
specifies whether to compute a one-dimensional mesh of points or lines. The
following symbolic constants are accepted: GL_POINT and GL_LINE.
i1,
i2
The first and
last integer values for grid domain variable i.
void glEvalMesh2(
GLenum mode, |
|
GLint i1, |
|
GLint i2, |
|
GLint j1, |
|
GLint j2 |
|
); |
|
Parameters
mode
In glEvalMesh2,
specifies whether to compute a two-dimensional mesh of points, lines, or
polygons. The following symbolic constants are accepted: GL_POINT, GL_LINE, and
GL_FILL.
i1,
i2
The first and
last integer values for grid domain variable i.
j1,
j2
The first and
last integer values for grid domain variable j.
Remarks
Use glMapGrid
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 Du
+ u (1) )
glEnd( );
where
Du = (u (2) - u (1) ) / n
and n,
u (1) , and u (2) are the
arguments to the most recent glMapGrid1 function. The type
parameter 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 D u + u (1) is exactly u (2) .
In the
two-dimensional case, glEvalMesh2, let
D u
= (u (2) - u (1) )/n
D 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
function. Then, if mode is GL_FILL, glEvalMesh2 is equivalent to:
for (j
= j1; j < j2; j += 1) {
glBegin(GL_QUAD_STRIP);
for (i = i1; i <= i2;
i += 1) {
glEvalCoord2(i D u
+ u (1 ) , j D v + v (1) );
glEvalCoord2(i D u
+ u (1 ) , (j+1) D 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 D u
+ u (1) , j D v + v (1) );
glEnd( );
}
for (i = i1; i <= i2;
i += 1) {
glBegin(GL_LINE_STRIP);
for (j = j1; j <= j1;
j += 1)
glEvalCoord2(i D u
+ u (1) , j D 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 D u
+ u (1) , j D v
+ v (1) );
}
}
glEnd( );
In all three
cases, the only absolute numeric requirements are that if i = n,
then the value computed from i D u + u (1) is exactly u (2) , and if j
= m, then the value computed from j D v + v (1) is exactly v (2) .
The following
functions retrieve information relating to glEvalMesh:
glGet
with argument GL_MAP1_GRID_DOMAIN
glGet with
argument GL_MAP2_GRID_DOMAIN
glGet with
argument GL_MAP1_GRID_SEGMENTS
glGet with
argument GL_MAP2_GRID_SEGMENTS
Error Codes
The following
are the error codes generated and their conditions.
Error
Code |
Condition |
GL_INVALID_ENUM
|
mode was not an accepted value. |
GL_INVALID_OPERATION
|
glEvalMesh was called between a call to glBegin and the
corresponding call to glEnd. |
See Also