glMap2f 函数
glMap2d 和 glMap2f 函数定义二维计算器。
void WINAPI glMap2f(
GLenum target,
GLfloat u1,
GLfloat u2,
GLint ustride,
GLint uorder,
GLfloat v1,
GLfloat v2,
GLint vstride,
GLint vorder,
const GLfloat *points
);
-
目标
-
计算器生成的值的种类。 接受以下符号常量。
值 含义 - GL_MAP2_VERTEX_3
每个控制点都是三个表示 x、y 和 z 的浮点值。 评估映射时会生成内部 glVertex3 命令。 - GL_MAP2_VERTEX_4
每个控制点都是表示 x、y、z 和 w 的四个浮点值。 评估映射时会生成内部 glVertex4 命令。 - GL_MAP2_INDEX
每个控制点都是表示颜色索引的单个浮点值。 评估映射时会生成内部 glIndex 命令。 但是,当前索引不会使用这些 glIndex 命令的值更新。 - GL_MAP2_COLOR_4
每个控制点都是四个表示红色、绿色、蓝色和 alpha 的浮点值。 评估映射时会生成内部 glColor4 命令。 但是,当前颜色不会使用这些 glColor4 命令的值更新。 - GL_MAP2_NORMAL
每个控制点都是三个浮点值,表示法向量的 x、y 和 z 分量。 评估映射时会生成内部 glNormal 命令。 但是,当前法线不会使用这些 glNormal 命令的值更新。 - GL_MAP2_TEXTURE_COORD_1
每个控制点都是表示 纹理坐标的 单个浮点值。 评估映射时会生成内部 glTexCoord1 命令。 但是,当前纹理坐标不会使用这些 glTexCoord 命令的值更新。 - GL_MAP2_TEXTURE_COORD_2
每个控制点都是两个浮点值,表示 s 和 t 纹理坐标。 评估映射时会生成内部 glTexCoord2 命令。 但是,当前纹理坐标不会使用这些 glTexCoord 命令的值更新。 - GL_MAP2_TEXTURE_COORD_3
每个控制点都是三个浮点值 ,表示 s、t 和 r 纹理坐标。 评估映射时会生成内部 glTexCoord3 命令。 但是,当前纹理坐标不会使用这些 glTexCoord 命令的值更新。 - GL_MAP2_TEXTURE_COORD_4
每个控制点都是四个浮点值 ,表示 s、t、r 和 q 纹理坐标。 评估映射时会生成内部 glTexCoord4 命令。 但是,当前纹理坐标不会使用这些 glTexCoord 命令的值更新。 -
u1
-
向 glEvalCoord2 呈现的 u 到 u^的线性映射,该映射由此命令指定的公式计算的两个变量之一。
-
u2
-
向 glEvalCoord2 呈现的 u 到 u^的线性映射,该映射由此命令指定的公式计算的两个变量之一。
-
ustride
-
控制点 Rij 的开头和控制点 R 的开头之间的浮点数或双精度数 (i\ +1\ ) \ j,其中 i 和 j 分别是 u 和 v 控制点索引。 这允许将控制点嵌入到任意数据结构中。 唯一的约束是特定控制点的值必须占用连续的内存位置。
-
uorder
-
U 轴中控制点数组的维度。 必须是正数。
-
v1
-
向 glEvalCoord2 呈现的 v 到 v^的线性映射,v^是此命令指定的公式计算的两个变量之一。
-
v2
-
向 glEvalCoord2 呈现的 v 到 v^的线性映射,v^是此命令指定的公式计算的两个变量之一。
-
vstride
-
控制点 Rij 的开头和控制点 R i 的开头之间的浮点数或双精度数 (j\ +1\ ) ,其中 i 和 j 分别是 u 和 v 控制点索引。 这允许将控制点嵌入到任意数据结构中。 唯一的约束是特定控制点的值必须占用连续的内存位置。
-
vorder
-
V 轴中控制点数组的维度。 必须是正数。
-
points
-
指向控制点数组的指针。
此函数不返回值。
glGetError 函数可以检索以下错误代码。
名称 | 含义 |
---|---|
|
target 不是接受的值。 |
|
u1 等于 u2,或 v1 等于 v2。 |
|
ustride 或 vstride 小于控制点中的值数。 |
|
要么是 uorder 还是 vorder 小于 1 或 GL_MAX_EVAL_ORDER。 |
|
函数是在 对 glBegin 的调用和对 glEnd 的相应调用之间调用的。 |
计算器提供了一种使用多项式或有理多项式映射生成顶点、法线、纹理坐标和颜色的方法。 计算器生成的值将发送到 OpenGL 处理的进一步阶段,就像使用 glVertex、 glNormal、 glTexCoord 和 glColor 命令呈现它们一样,只不过生成的值不会更新当前法线、纹理坐标或颜色。
任何程度的多项式或有理多项式样条 (到 OpenGL 实现) 支持的最大程度,都可以使用计算器进行描述。 其中包括计算机图形中使用的几乎所有图面,包括 B 样条图面、NURBS 图面、贝塞尔表面等。
计算器基于双变量 Bernstein 多项式定义图面。 将 p (u^,v^) 定义为
其中 Rij 是控制点, () 是度数的 ith Bernstein 多项式
n (uorder = n + 1)
和 () 是 j thBernstein 多项式,度 m (vorder = m + 1)
回想一下
glMap2 函数用于定义基础并指定生成的值类型。 定义后,可以通过调用 glEnable 和 glDisable 和 glDisable 来启用和禁用映射,映射名称是 上述目标的 9 个预定义值之一。 当 glEvalCoord2 呈现值 u 和 v 时,使用 u^ 和 v^ 计算双变量 Bernstein 多项式,其中
和
目标参数是一个符号常量,用于指示以点为单位提供哪种类型的控制点,以及计算映射时生成的输出。
ustride、uorder、vstride、vorder 和 points 参数定义用于访问控制点的数组寻址。 points 参数是第一个控制点的位置,它占用一个、两个、三个或四个连续内存位置,具体取决于要定义的映射。 数组中有 uorder x vorder 控制点。 ustride 参数指示跳过了多少个浮点或双精度位置,以将内部内存指针从控制点 Rij 推进到控制点 R (\ i+1\ ) j。 vstride 参数指示跳过了多少个浮点或双精度位置,以将内部内存指针从控制点 Rij 推进到控制点 Ri (j\ +1\ ) 。
与接受指向数据的指针的所有 OpenGL 命令一样,就像 glMap2 在返回之前复制了点的内容一样。 调用 glMap2 后,对点内容的更改不起作用。
以下函数检索与 glMap2 相关的信息:
带参数GL_MAX_EVAL_ORDER的 glGet
带参数GL_MAP2_VERTEX_3的 glIsEnabled
带参数GL_MAP2_VERTEX_4的 glIsEnabled
带参数GL_MAP2_INDEX的 glIsEnabled
glIsEnabled with argument GL_MAP2_COLOR_4
glIsEnabled with argument GL_MAP2_NORMAL
带参数GL_MAP2_TEXTURE_COORD_1的 glIsEnabled
glIsEnabled with argument GL_MAP2_TEXTURE_COORD_2
带参数GL_MAP2_TEXTURE_COORD_3的 glIsEnabled
带参数GL_MAP2_TEXTURE_COORD_4的 glIsEnabled
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 |
Windows 2000 Server [仅限桌面应用] |
标头 |
|
库 |
|
DLL |
|