-  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