Index Return to Main Contents

GLdoublevoidu1, GLdoubleu2, GLintustride, GLintuorder, GLdoublev1, GLdoublev2, GLintvstride, GLintvorder, const GLdouble*points)

GLfloatu1, GLfloatu2, GLintustride, GLintuorder, GLfloatv1, GLfloatv2, GLintvstride, GLintvorder, const GLfloat*points)

*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 $u hat$, 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
$R sub ij$
and the beginning of control point
$R sub { (i+1) j }$,
where $i$ and $j$ are the $u$ and $v$ control point indices, respectively.
This allows control points to be embedded in arbitrary 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 is 1.
*v1*,*v2*-
Specify a linear mapping of $v$,
as presented to
**glEvalCoord2**, to $v hat$, 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
$R sub ij$
and the beginning of control point
$R sub { i (j+1) }$,
where $i$ and $j$ are the $u$ and $v$ control point indices, respectively.
This allows control points to be embedded in arbitrary 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.

down 30 {{size 18 {sum}} from {size 8 {i~=~0}} to {size 9 {n}} } ~

{{size 18 {sum}} from {size 8 {j~=~0}} to {size 9 {m}} } ~

up 15 { B sub i sup n ( u hat ) ~ B sub j sup m ( v hat ) ~ R sub ij }

where $R sub ij$ is a control point,
$B sub i sup n ( u hat )$
is the $i$th Bernstein polynomial of degree

$n$ (*uorder* = $n ~+~ 1$)

and $B sub j sup m ( v hat )$
is the $j$th Bernstein polynomial of degree $m$ (*vorder* = $m ~+~ 1$)

Recall that

**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 $u hat$ and $v hat$,
where

*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**commands 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.
Internal
**glColor4**commands are generated when the map is evaluated but the current color is not updated with the value of these**glColor4**commands. **GL_MAP2_NORMAL**-
Each control point is three 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 coordinates.
Internal
**glTexCoord3**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_4**-
Each control point is four floating-point values representing
the $s$, $t$, $r$, and $q$ texture coordinates.
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" ~times~ "vorder" $ control points in the array.*ustride*specifies how many float or double locations are skipped to advance the internal memory pointer from control point $R sub {i j} $ to control point $R sub {(i+1) j} $.*vstride*specifies how many float or double locations are skipped to advance the internal memory pointer from control point $R sub {i j} $ to control point $R sub {i (j+1) } $.

- NAME
- C SPECIFICATION
- PARAMETERS
- DESCRIPTION
- NOTES
- ERRORS
- ASSOCIATED GETS
- SEE ALSO