Gl.EvalMesh2 (gb.opengl)
Static Sub EvalMesh2 ( Mode As Integer, I1 As Integer, I2 As Integer, J1 As Integer, J2 As Integer )
Compute a one- or two-dimensional grid of points or lines.
Parameters
- mode
-
In Gl.EvalMesh1, 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
.
Parameters
- mode
-
In Gl.EvalMesh2, 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
.
- j1, j2
-
Specify the first and last integer values for grid domain variable
.
Description
Gl.MapGrid and
Gl.EvalMesh are used in tandem to efficiently
generate and evaluate a series of evenly-spaced map domain values.
Gl.EvalMesh steps through the integer domain of a one- or two-dimensional grid,
whose range is the domain of the evaluation maps specified by
Gl.Map1 and Gl.Map2.
mode determines whether the resulting vertices are connected as
points,
lines,
or filled polygons.
In the one-dimensional case,
Gl.EvalMesh1,
the mesh is generated as if the following code fragment were executed:
glBegin( type );
for ( i = i1; i <= i2; i += 1 )
glEvalCoord1( );
glEnd();
where
and
,
,
and
are the arguments to the most recent
Gl.MapGrid1 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
,
then the
value computed from
is exactly
.
In the two-dimensional case,
Gl.EvalMesh2, let
.cp
where
,
,
,
,
,
and
are the
arguments to the most recent Gl.MapGrid2 command. Then, if
mode is Gl.FILL, the
Gl.EvalMesh2 command is equivalent
to:
for ( j = j1; j < j2; j += 1 ) {
glBegin( GL_QUAD_STRIP );
for ( i = i1; i <= i2; i += 1 ) {
glEvalCoord2( );
glEvalCoord2( );
}
glEnd();
}
If
mode is Gl.LINE, then a call to
Gl.EvalMesh2 is equivalent to:
for ( j = j1; j <= j2; j += 1 ) {
glBegin( GL_LINE_STRIP );
for ( i = i1; i <= i2; i += 1 )
glEvalCoord2( );
glEnd();
}
for ( i = i1; i <= i2; i += 1 ) {
glBegin( GL_LINE_STRIP );
for ( j = j1; j <= j1; j += 1 )
glEvalCoord2( );
glEnd();
}
And finally, if
mode is Gl.POINT, then a call to
Gl.EvalMesh2 is equivalent to:
glBegin( GL_POINTS );
for ( j = j1; j <= j2; j += 1 )
for ( i = i1; i <= i2; i += 1 )
glEvalCoord2( );
glEnd();
In all three cases, the only absolute numeric requirements are that if
,
then the value computed from
is exactly
,
and if
,
then the value computed from
is exactly
.
Errors
Gl.INVALID_ENUM is generated if
mode is not an accepted value.
Gl.INVALID_OPERATION is generated if
Gl.EvalMesh
is executed between the execution of Gl.Begin
and the corresponding execution of Gl.End.
Associated Gets
Gl.Get with argument Gl.MAP1_GRID_DOMAIN
Gl.Get with argument Gl.MAP2_GRID_DOMAIN
Gl.Get with argument Gl.MAP1_GRID_SEGMENTS
Gl.Get with argument Gl.MAP2_GRID_SEGMENTS
See also
Gl.Begin,
Gl.EvalCoord,
Gl.EvalPoint,
Gl.Map1,
Gl.Map2,
Gl.MapGrid
See original documentation on OpenGL website