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 i.

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 i.
j1, j2

Specify the first and last integer values for grid domain variable j.

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( 


i
·
Δ
u

+

u
1


 );
glEnd();

where

Δ u u 2 - u 1 n

and n, u 1 , and u 2 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 i n , then the value computed from i · Δ u + u 1 is exactly u 2 .

In the two-dimensional case, Gl.EvalMesh2, let .cp Δ 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 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( 


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 Gl.EvalMesh2 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 Gl.EvalMesh2 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.

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