- define a one-dimensional evaluator



C SPECIFICATION


PARAMETERS

       _param1  Specifies  the  kind of values that are generated
                by    the    evaluator.     Symbolic    constants
                GL_MAP1_VERTEX_3,               GL_MAP1_VERTEX_4,
                GL_MAP1_INDEX,  GL_MAP1_COLOR_4,  GL_MAP1_NORMAL,
                GL_MAP1_TEXTURE_COORD_1, GL_MAP1_TEXTURE_COORD_2,
                GL_MAP1_TEXTURE_COORD_3,                      and
                GL_MAP1_TEXTURE_COORD_4 are accepted.

       _param2, _param3
                Specify  a  linear  mapping of u, as presented to
                glEvalCoord1, to <I>u, the variable that  is  evalu-
                ated  by the equations specified by this command.

       _param4  Specifies the number of floats or doubles between
                the beginning of one control point and the begin-
                ning of the next one in the data structure refer-
                enced  in _param6.  This allows control points to
                be embedded in arbitrary  data  structures.   The
                only constraint is that the values for a particu-
                lar control point must occupy  contiguous  memory
                locations.

       _param5  Specifies  the number of control points.  Must be
                positive.

       _param6  Specifies a  pointer  to  the  array  of  control
                points.



DESCRIPTION

       Evaluators  provide  a  way  to use polynomial or rational
       polynomial mapping to produce vertices,  normals,  texture
       coordinates, and colors.  The values produced by an evalu-
       ator are sent to further stages of GL processing  just  as
       if  they  had  been  presented  using  glVertex, glNormal,
       glTexCoord, and glColor commands, except that  the  gener-
       ated  values  do  not  update  the current normal, texture
       coordinates, or color.

       All polynomial  or  rational  polynomial  splines  of  any
       degree  (up  to  the  maximum  degree  supported by the GL
       implementation) can be described using evaluators.   These
       include  almost  all splines used in computer graphics: B-
       splines, Bezier curves, Hermite splines, and so on.

       Evaluators define curves based on  Bernstein  polynomials.
       Define p(<I>u) as


                          Bn<I>i(<I>u)=( )<I>ui(1-<I>u)n-i









                                 i

       Recall that
                                       n









                            00==1 and ( )==1









                                       0

       glMap1 is used to define the basis  and  to  specify  what
       kind  of  values are produced.  Once defined, a map can be
       enabled and disabled by  calling  glEnable  and  glDisable
       with  the  map name, one of the nine predefined values for
       _param1 described below.  glEvalCoord1 evaluates the  one-
       dimensional maps that are enabled.  When
       glEvalCoord1  presents  a value u, the Bernstein functions
       are evaluated using <I>u, where

                        <I>u=_e_q_n_p_u<I>a_<I>r_<I>a_e<I>m_q_n_p_a<I>e_r<I>q_a<I>n_m<I>p_<I>a_r_a_m__


       _param1 is a symbolic constant that indicates what kind of
       control points are provided in _param6, and what output is
       generated when the map is evaluated.  It can assume one of
       GL_MAP1_INDEX            Each  control  point  is a single
                                floating-point value representing
                                a  color index.  Internal glIndex
                                commands are generated  when  the
                                map  is evaluated but the current
                                index is  not  updated  with  the
                                value  of these glIndex commands.

       GL_MAP1_COLOR_4          Each control point is four float-
                                ing-point   values   representing
                                red,  green,  blue,  and   alpha.
                                Internal  glColor4  commands  are
                                generated when the map is  evalu-
                                ated but the current color is not
                                updated with the value  of  these
                                glColor4 commands.

       GL_MAP1_NORMAL           Each   control   point  is  three
                                floating-point values  represent-
                                ing the x, y, and z components of
                                a   normal   vector.     Internal
                                glNormal  commands  are generated
                                when the map is evaluated but the
                                current  normal  is  not  updated
                                with the value of these  glNormal
                                commands.

       GL_MAP1_TEXTURE_COORD_1  Each  control  point  is a single
                                floating-point value representing
                                the s texture coordinate.  Inter-
                                nal
                                glTexCoord1 commands  are  gener-
                                ated  when  the  map is evaluated
                                but the current  texture  coordi-
                                nates  are  not  updated with the
                                value of  these  glTexCoord  com-
                                mands.

       GL_MAP1_TEXTURE_COORD_2  Each  control point is two float-
                                ing-point values representing the
                                s   and  t  texture  coordinates.
                                Internal
                                glTexCoord2 commands  are  gener-
                                ated  when  the  map is evaluated
                                but the current  texture  coordi-
                                nates  are  not  updated with the
                                value of  these  glTexCoord  com-
                                mands.

       GL_MAP1_TEXTURE_COORD_3  Each   control   point  is  three
                                floating-point values  represent-
                                ing the s, t, and r texture coor-
                                nates  are  not  updated with the
                                value of  these  glTexCoord  com-
                                mands.

       _param4,  _param5, and _param6 define the array addressing
       for accessing the control points.  _param6 is the location
       of  the  first  control  point,  which  occupies one, two,
       three, or four contiguous memory locations,  depending  on
       which map is being defined.  _param5 is the number of con-
       trol points in the  array.   _param4  specifies  how  many
       float  or  double locations to advance the internal memory
       pointer to reach the next control point.


NOTES

       As is the case with all GL commands that  accept  pointers
       to  data,  it is as if the contents of _param6 were copied
       by glMap1 before glMap1 returns.  Changes to the  contents
       of _param6 have no effect after glMap1 is called.


ERRORS

       GL_INVALID_ENUM is generated if _param1 is not an accepted
       value.

       GL_INVALID_VALUE is  generated  if  _param2  is  equal  to
       _param3.

       GL_INVALID_VALUE  is generated if _param4 is less than the
       number of values in a control point.

       GL_INVALID_VALUE is generated if _param5 is less than 1 or
       greater than the return value of GL_MAX_EVAL_ORDER.

       GL_INVALID_OPERATION  is  generated  if glMap1 is executed
       between the execution of  glBegin  and  the  corresponding
       execution of glEnd.

       When   the  GL_ARB_multitexture  extension  is  supported,
       GL_INVALID_OPERATION is generated if glMap1 is called  and
       the value of GL_ACTIVE_TEXTURE_ARB is not GL_TEXTURE0_ARB.


ASSOCIATED GETS

       glGetMap
       glGet with argument GL_MAX_EVAL_ORDER
       glIsEnabled with argument GL_MAP1_VERTEX_3
       glIsEnabled with argument GL_MAP1_VERTEX_4
       glIsEnabled with argument GL_MAP1_INDEX
       glIsEnabled with argument GL_MAP1_COLOR_4
       glIsEnabled with argument GL_MAP1_NORMAL
       glIsEnabled with argument GL_MAP1_TEXTURE_COORD_1
       glIsEnabled with argument GL_MAP1_TEXTURE_COORD_2
       glIsEnabled with argument GL_MAP1_TEXTURE_COORD_3
       glIsEnabled with argument GL_MAP1_TEXTURE_COORD_4