glMap1f 函数

glMap1dglMap1f 函数定义一维计算器。

语法

void WINAPI glMap1f(
         GLenum  target,
         GLfloat u1,
         GLfloat u2,
         GLint   stride,
         GLint   order,
   const GLfloat *points
);

参数

目标

计算器生成的值的种类。 符号常量。 目标参数是一个符号常量,用于指示以为单位提供哪种类型的控制点,以及计算映射时生成的输出。 它可以假设九个预定义值之一。

含义
GL_MAP1_VERTEX_3
每个控制点都是三个表示 x、yz 的浮点值。 评估映射时会生成内部 glVertex3 命令。
GL_MAP1_VERTEX_4
每个控制点都是表示 x、y、zw 的四个浮点值。 评估映射时会生成内部 glVertex4 命令。
GL_MAP1_INDEX
每个控制点都是表示颜色索引的单个浮点值。 评估映射时会生成内部 glIndex 命令。 但是,当前索引不会使用这些 glIndex 命令的值更新。
GL_MAP1_COLOR_4
每个控制点都是四个表示红色、绿色、蓝色和 alpha 的浮点值。 评估映射时会生成内部 glColor4 命令。 但是,当前颜色不会更新为这些 glColor4 命令的值。
GL_MAP1_NORMAL
每个控制点都是三个浮点值,表示法向量的 x、yz 分量。 评估映射时会生成内部 glNormal 命令。 但是,当前法线不会使用这些 glNormal 命令的值更新。
GL_MAP1_TEXTURE_COORD_1
每个控制点都是表示 纹理坐标的 单个浮点值。 评估映射时会生成内部 glTexCoord1 命令。 但是,当前纹理坐标不会使用这些 glTexCoord 命令的值更新。
GL_MAP1_TEXTURE_COORD_2
每个控制点都是两个浮点值,表示 st 纹理坐标。 评估映射时会生成内部 glTexCoord2 命令。 但是,当前纹理坐标不会使用这些 glTexCoord 命令的值更新。
GL_MAP1_TEXTURE_COORD_3
每个控制点都是三个浮点值 ,表示 s、tr 纹理坐标。 评估映射时会生成内部 glTexCoord3 命令。 但是,当前纹理坐标不会使用这些 glTexCoord 命令的值更新。
GL_MAP1_TEXTURE_COORD_4
每个控制点都是四个浮点值 ,表示 s、t、rq 纹理坐标。 评估映射时会生成内部 glTexCoord4 命令。 但是,当前纹理坐标不会使用这些 glTexCoord 命令的值更新。

u1

glEvalCoord1 呈现的 uu^的线性映射,该变量由此命令指定的公式计算。

u2

glEvalCoord1 呈现的 uu^的线性映射,该变量由此命令指定的公式计算。

大步

数据结构中引用的一个控制点的开头和下一个控制点的开头之间的浮点数或双 精度数。 这允许将控制点嵌入到任意数据结构中。 唯一的约束是特定控制点的值必须占用连续的内存位置。

order

控制点的数目。 必须是正数。

points

指向控制点数组的指针。

返回值

此函数不返回值。

错误代码

glGetError 函数可以检索以下错误代码。

名称 含义
GL_INVALID_ENUM
target 不是接受的值。
GL_INVALID_VALUE
u1 等于 u2
GL_INVALID_VALUE
stride 小于控制点中的值数。
GL_INVALID_VALUE
顺序 小于一个或GL_MAX_EVAL_ORDER。
GL_INVALID_OPERATION
函数是在 对 glBegin 的调用和对 glEnd 的相应调用之间调用的。

备注

计算器提供了一种使用多项式或有理多项式映射生成顶点、法线、纹理坐标和颜色的方法。 计算器生成的值将发送到 OpenGL 处理的后续阶段,就像使用 glVertexglNormalglTexCoordglColor 命令呈现它们一样,只不过生成的值不会更新当前法线、纹理坐标或颜色。

任何程度的多项式或有理多项式样条 (到 OpenGL 实现) 支持的最大程度,都可以使用计算器进行描述。 其中包括计算机图形中使用的几乎所有样条,包括 B 样条、贝塞尔曲线、赫米特样条等。

计算器基于伯恩斯坦多项式定义曲线。 将 p () 定义为

显示 p () 定义的公式。

其中 Ri 是控制点, () 是 n 度的i 伯恩斯坦多项式 (顺序 =n + 1) :

显示 n 度的伯恩斯坦多项式的等式。

回想一下

显示等效于 1 的公式。

glMap1 函数用于定义基础并指定生成的值类型。 定义后,可以通过使用映射名称调用 glEnableglDisable 来启用和禁用映射,该映射是上述 目标的 9 个预定义值之一。 glEvalCoord1 函数计算已启用的一维映射。 当 glEvalCoord1 显示值 u 时,使用 u^计算 Bernstein 函数,其中

显示你^的定义的公式。

步幅顺序参数定义用于访问控制点的数组寻址。 points 参数是第一个控制点的位置,它占用一个、两个、三个或四个连续内存位置,具体取决于要定义的映射。 order 参数是数组中的控制点数。 步幅参数指示要推进内部内存指针以到达下一个控制点的浮点或双精度位置数。

与接受指向数据的指针的所有 OpenGL 命令的情况一样,就像 glMap1 在返回之前复制了点的内容一样。 调用 glMap1 后,对点内容的更改不起作用。

以下函数检索与 glMap1 相关的信息:

带参数GL_MAX_EVAL_ORDER的 glGet

glGetMap

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

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Gl.h

Opengl32.lib
DLL
Opengl32.dll

另请参阅

glBegin

glColor

glEnable

glEnd

glEvalCoord

glEvalMesh

glEvalPoint

glMap2

glMapGrid

glNormal

glTexCoord

glVertex