points or lines
GLint i1, GLint i2 )
eqn not supported
GLint i1, GLint i2, GLint j1, GLint j2 )
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$^cdot^DELTA u ~+~ u sub 1$ ); glEnd();where
$ DELTA u ~=~ (u sub 2 ~-~ u sub 1 ) ^/^ n$
and $n$, $u sub 1$, and $u sub 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^cdot^DELTA u ~+~ u sub 1$ is exactly $u sub 2$.
In the two-dimensional
case, glEvalMesh2, let
$ DELTA u ~=~ mark ( u sub 2 ~-~ u sub 1 ) ^/^ n$ $ DELTA v ~=~ lineup ( v sub 2 ~-~ v sub 1 ) ^/^ m$,
where $n$, $u sub 1$, $u sub 2$, $m$, $v sub 1$, and $v sub 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$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, (j+1)$^cdot^DELTA v ~+~ v sub 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$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); glEnd(); } for ( i = i1; i <= i2; i += 1 ) { glBegin( GL_LINE_STRIP ); for ( j = j1; j <= j1; j += 1 ) glEvalCoord2( i$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 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$^cdot^DELTA u ~+~ u sub 1$, j$^cdot^DELTA v ~+~ v sub 1$ ); glEnd();
In all three cases, the only absolute numeric requirements are that if $i~=~n$, then the value computed from $i^cdot^DELTA u ~+~ u sub 1$ is exactly $u sub 2$, and if $j~=~m$, then the value computed from $j ^cdot^ DELTA v ~+~ v sub 1$ is exactly $v sub 2$.
GL_INVALID_OPERATION is generated if glEvalMesh is executed between the execution of glBegin and the corresponding execution of glEnd.