MirBSD manpage: glMap2(3), glMap2d(3), glMap2f(3)


GLMAP2(3G)          UNIX Programmer's Manual           GLMAP2(3G)

NAME

     glMap2d, glMap2f - define a two-dimensional evaluator

C SPECIFICATION

     void glMap2d( GLenum target,
                   GLdouble u1,
                   GLdouble u2,
                   GLint ustride,
                   GLint uorder,
                   GLdouble v1,
                   GLdouble v2,
                   GLint vstride,
                   GLint vorder,
                   const GLdouble *points )
     void glMap2f( GLenum target,
                   GLfloat u1,
                   GLfloat u2,
                   GLint ustride,
                   GLint uorder,
                   GLfloat v1,
                   GLfloat v2,
                   GLint vstride,
                   GLint vorder,
                   const GLfloat *points )

PARAMETERS

     target   Specifies the kind of values that are generated by
              the evaluator. Symbolic constants GL_MAP2_VERTEX_3,
              GL_MAP2_VERTEX_4, GL_MAP2_INDEX, GL_MAP2_COLOR_4,
              GL_MAP2_NORMAL, GL_MAP2_TEXTURE_COORD_1,
              GL_MAP2_TEXTURE_COORD_2, GL_MAP2_TEXTURE_COORD_3,
              and GL_MAP2_TEXTURE_COORD_4 are accepted.

     u1, u2   Specify a linear mapping of u, as presented to
              glEvalCoord2, to ^, one of the two variables that
              are evaluated by the equations specified by this
              command. Initially, u1 is 0 and u2 is 1.

     ustride  Specifies the number of floats or doubles between
              the beginning of control point Rij and the begin-
              ning of control point R(i+1)j, where i and j are
              the u and v control point indices, respectively.
              This allows control points to be embedded in arbi-
              trary data structures. The only constraint is that
              the values for a particular control point must
              occupy contiguous memory locations. The initial
              value of ustride is 0.

     uorder   Specifies the dimension of the control point array
              in the u axis. Must be positive. The initial value

MirBSD #10-current     Printed 2021-12-07                       1

GLMAP2(3G)          UNIX Programmer's Manual           GLMAP2(3G)

              is 1.

     v1, v2   Specify a linear mapping of v, as presented to
              glEvalCoord2, to ^, one of the two variables that
              are evaluated by the equations specified by this
              command. Initially, v1 is 0 and v2 is 1.

     vstride  Specifies the number of floats or doubles between
              the beginning of control point Rij and the begin-
              ning of control point Ri(j+1), where i and j are
              the u and v control point indices, respectively.
              This allows control points to be embedded in arbi-
              trary data structures. The only constraint is that
              the values for a particular control point must
              occupy contiguous memory locations. The initial
              value of vstride is 0.

     vorder   Specifies the dimension of the control point array
              in the v axis. Must be positive. The initial value
              is 1.

     points   Specifies a pointer to the array of control points.

DESCRIPTION

     Evaluators provide a way to use polynomial or rational poly-
     nomial mapping to produce vertices, normals, texture coordi-
     nates, and colors. The values produced by an evaluator are
     sent on to further stages of GL processing just as if they
     had been presented using glVertex, glNormal, glTexCoord, and
     glColor commands, except that the generated 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 implementa-
     tion) can be described using evaluators. These include
     almost all surfaces used in computer graphics, including B-
     spline surfaces, NURBS surfaces, Bezier surfaces, and so on.

     Evaluators define surfaces based on bivariate Bernstein
     polynomials. Define p(^,^) as            m(^) Rij
                             n     m    n(^) Bj
                p(^,^)  =    ≥̅     ≥̅n(^)iis the ith Bernstein
     polynomialiofadegreeolipoint, Bi0
     n (uorder = n + 1)          |n |
                        n(^)  =  |i |^i(1-^)n-i
          m(^) is the jth Bernstein polynomial of degree m
     (_v_or_d_er = m + 1)

MirBSD #10-current     Printed 2021-12-07                       2

GLMAP2(3G)          UNIX Programmer's Manual           GLMAP2(3G)

                                 |m |
                        m(^)  =  |j |^j(1-^)m-j
                       Bj        |  |
     Recall that                   |n |
                        00 _ 1 and |0 |  _  1
                                   |  |
     glMap2 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 target,
     described below. When glEvalCoord2 presents values u and v,
     the bivariate Bernstein polynomials are evaluated using ^
     and ^, where
                                  ______1_
                            ^  =  _2__-__v_1_
                            ^  =  v2 - v1
     target is a symbolic constant that indicates what kind of
     control points are provided in points, and what output is
     generated when the map is evaluated. It can assume one of
     nine predefined values:

     GL_MAP2_VERTEX_3         Each control point is three
                              floating-point values representing
                              x, y, and z. Internal glVertex3
                              commands are generated when the map
                              is evaluated.

     GL_MAP2_VERTEX_4         Each control point is four
                              floating-point values representing
                              x, y, z, and w. Internal glVertex4
                              commands are generated when the map
                              is evaluated.

     GL_MAP2_INDEX            Each control point is a single
                              floating-point value representing a
                              color index. Internal glIndex com-
                              mands are generated when the map is
                              evaluated but the current index is
                              not updated with the value of these
                              glIndex commands.

     GL_MAP2_COLOR_4          Each control point is four
                              floating-point values representing
                              red, green, blue, and alpha. Inter-
                              nal glColor4 commands are generated
                              when the map is evaluated but the
                              current color is not updated with
                              the value of these glColor4 com-
                              mands.

     GL_MAP2_NORMAL           Each control point is three

MirBSD #10-current     Printed 2021-12-07                       3

GLMAP2(3G)          UNIX Programmer's Manual           GLMAP2(3G)

                              floating-point values representing
                              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_MAP2_TEXTURE_COORD_1  Each control point is a single
                              floating-point value representing
                              the s texture coordinate. Internal
                              glTexCoord1 commands are generated
                              when the map is evaluated but the
                              current texture coordinates are not
                              updated with the value of these
                              glTexCoord commands.

     GL_MAP2_TEXTURE_COORD_2  Each control point is two
                              floating-point values representing
                              the s and t texture coordinates.
                              Internal
                              glTexCoord2 commands are generated
                              when the map is evaluated but the
                              current texture coordinates are not
                              updated with the value of these
                              glTexCoord commands.

     GL_MAP2_TEXTURE_COORD_3  Each control point is three
                              floating-point values representing
                              the s, t, and r texture coordi-
                              nates. Internal glTexCoord3 com-
                              mands are generated when the map is
                              evaluated but the current texture
                              coordinates are not updated with
                              the value of these glTexCoord com-
                              mands.

     GL_MAP2_TEXTURE_COORD_4  Each control point is four
                              floating-point values representing
                              the s, t, r, and q texture coordi-
                              nates. Internal
                              glTexCoord4 commands are generated
                              when the map is evaluated but the
                              current texture coordinates are not
                              updated with the value of these
                              glTexCoord commands.

     ustride, uorder, vstride, vorder, and points define the
     array addressing for accessing the control points. points 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. There are uorder x vorder

MirBSD #10-current     Printed 2021-12-07                       4

GLMAP2(3G)          UNIX Programmer's Manual           GLMAP2(3G)

     control points in the array. ustride specifies how many
     float or double locations are skipped to advance the inter-
     nal memory pointer from control point Rij to control point
     R(i+1)j. vstride specifies how many float or double loca-
     tions are skipped to advance the internal memory pointer
     from control point Rij to control point Ri(j+1).

NOTES

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

     Initially, GL_AUTO_NORMAL is enabled. If GL_AUTO_NORMAL is
     enabled, normal vectors are generated when either
     GL_MAP2_VERTEX_3 or GL_MAP2_VERTEX_4 is used to generate
     vertices.

ERRORS

     GL_INVALID_ENUM is generated if target is not an accepted
     value.

     GL_INVALID_VALUE is generated if u1 is equal to u2, or if v1
     is equal to v2.

     GL_INVALID_VALUE is generated if either ustride or vstride
     is less than the number of values in a control point.

     GL_INVALID_VALUE is generated if either uorder or vorder is
     less than 1 or greater than the return value of
     GL_MAX_EVAL_ORDER.

     GL_INVALID_OPERATION is generated if glMap2 is executed
     between the execution of glBegin and the corresponding exe-
     cution of glEnd.

     When the GL_ARB_multitexture extension is supported,
     GL_INVALID_OPERATION is generated if glMap2 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_MAP2_VERTEX_3
     glIsEnabled with argument GL_MAP2_VERTEX_4
     glIsEnabled with argument GL_MAP2_INDEX
     glIsEnabled with argument GL_MAP2_COLOR_4
     glIsEnabled with argument GL_MAP2_NORMAL
     glIsEnabled with argument GL_MAP2_TEXTURE_COORD_1
     glIsEnabled with argument GL_MAP2_TEXTURE_COORD_2
     glIsEnabled with argument GL_MAP2_TEXTURE_COORD_3
     glIsEnabled with argument GL_MAP2_TEXTURE_COORD_4

MirBSD #10-current     Printed 2021-12-07                       5

GLMAP2(3G)          UNIX Programmer's Manual           GLMAP2(3G)

SEE ALSO

     glBegin(3G), glColor(3G), glEnable(3G), glEvalCoord(3G),
     glEvalMesh(3G), glEvalPoint(3G), glMap1(3G), glMapGrid(3G),
     glNormal(3G), glTexCoord(3G), glVertex(3G)

MirBSD #10-current     Printed 2021-12-07                       6

Generated on 2021-12-07 11:07:08 by $MirOS: src/scripts/roff2htm,v 1.103 2021/01/23 20:24:35 tg Exp $ — This product includes material provided by mirabilos.

These manual pages and other documentation are copyrighted by their respective writers; their sources are available at the project’s CVSweb, AnonCVS and other mirrors. The rest is Copyright © 2002–2021 MirBSD.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report — diffs preferred.