- compute a one- or two-dimensional grid of points or
lines
C SPECIFICATION
PARAMETERS
_param1 In glEvalMesh1, specifies whether to compute a
one-dimensional mesh of points or lines. Sym-
bolic constants GL_POINT and GL_LINE are
accepted.
_param2, _param3
Specify the first and last integer values for
grid domain variable i.
C SPECIFICATION
PARAMETERS
_param1
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.
_param2, _param3
Specify the first and last integer values for grid
domain variable i.
_param4, _param5
Specify the first and last integer values for grid
domain variable j.
DESCRIPTION
glMapGrid and glEvalMesh are used in tandem to efficiently
generate and evaluate a series of evenly-spaced map domain
values. glEvalMesh steps through the integer domain of a
one- or two-dimensional grid, whose range is the domain of
the evaluation maps specified by glMap1 and glMap2.
_param1(1) determines whether the resulting vertices are
connected as points, lines, or filled polygons.
In the one-dimensional case, glEvalMesh1, the mesh is gen-
erated as if the following code fragment were executed:
glBegin( type );
for ( i = _param2; i <= _param3; i += 1 )
glEvalCoord1( i./\u+u1 );
glEnd();
where
/\u=(u2-u1)/n
where n, u1, u2, m, v1, and v2 are the arguments to the most
recent glMapGrid2 command. Then, if _param1(2) is GL_FILL, the
glEvalMesh2 command is equivalent to:
for ( j = _param4; j < _param5; j += 1 ) {
glBegin( GL_QUAD_STRIP );
for ( i = _param2; i <= _param3; i += 1 ) {
glEvalCoord2( i./\u+u1, j./\v+v1 );
glEvalCoord2( i./\u+u1, (j+1)./\v+v1 );
}
glEnd();
}
If _param1 is GL_LINE, then a call to glEvalMesh2 is equivalent
to:
for ( j = _param4; j <= _param5; j += 1 ) {
glBegin( GL_LINE_STRIP );
for ( i = _param2; i <= _param3; i += 1 )
glEvalCoord2( i./\u+u1, j./\v+v1 );
glEnd();
}
for ( i = _param2; i <= _param3; i += 1 ) {
glBegin( GL_LINE_STRIP );
for ( j = _param4; j <= _param4; j += 1 )
glEvalCoord2( i./\u+u1, j./\v+v1 );
glEnd();
}
And finally, if _param1 is GL_POINT, then a call to glEvalMesh2
is equivalent to:
glBegin( GL_POINTS );
for ( j = _param4; j <= _param5; j += 1 )
for ( i = _param2; i <= _param3; i += 1 )
glEvalCoord2( i./\u+u1, j./\v+v1 );
glEnd();
In all three cases, the only absolute numeric requirements are
that if i=n, then the value computed from i./\u+u1 is exactly u2,
and if j=m, then the value computed from j./\v+v1 is exactly v2.
ERRORS
GL_INVALID_ENUM is generated if _param1 is not an accepted
glBegin, glEvalCoord, glEvalPoint, glMap1, glMap2,
glMapGrid
1