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.