glTexGend 函数

控制纹理坐标的生成。

语法

void WINAPI glTexGend(
   GLenum   coord,
   GLenum   pname,
   GLdouble param
);

参数

coord

纹理坐标。 必须是下列项之一:GL_S、GL_T、GL_R或GL_Q。

pname

纹理坐标生成函数的符号名称。

param

单个值纹理生成参数、GL_OBJECT_LINEAR、GL_EYE_LINEAR或GL_SPHERE_MAP之一。

返回值

此函数不返回值。

错误代码

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

名称 含义
GL_INVALID_ENUM
coordpname 不是接受定义的值,或者 pname GL_TEXTURE_GEN_MODE, 参数 不是接受的定义值。
GL_INVALID_ENUM
pname 是GL_TEXTURE_GEN_MODE, 参数 是GL_SPHERE_MAP, coord 是GL_R还是GL_Q
GL_INVALID_OPERATION
函数在 对 glBegin 的调用和 glEnd 的相应调用之间调用。

备注

glTexGen 函数选择纹理坐标生成函数或为其中一个函数提供系数。 coord 参数命名 (s、t、r、q) 纹理坐标之一,并且必须是以下符号之一:GL_S、GL_T、GL_R或GL_Q。 pname 参数必须是三个符号常量之一:GL_TEXTURE_GEN_MODE、GL_OBJECT_PLANE或GL_EYE_PLANE。 如果 pname GL_TEXTURE_GEN_MODE, 则参数 指定模式、GL_OBJECT_LINEAR、GL_EYE_LINEAR或GL_SPHERE_MAP之一。 如果 pname 为 GL_OBJECT_PLANE 或 GL_EYE_PLANE, 则参数 包含相应纹理生成函数的系数。

如果纹理生成函数GL_OBJECT_LINEAR,则函数

Equation showing the glTexGen function when the texture generation function is GL_OBJECT_LINEAR.

用于使用 g 为 coord 中命名的坐标计算的值;p1、p2、p3 和 p4 是参数中提供的四个值:和 x?、y?、z?和 w?是顶点的对象坐标。 可以使用此函数将海平面用作 p1、p2、p3 和 p4 () 定义的参考平面来纹理地图地形。 GL_OBJECT_LINEAR坐标生成函数计算地形顶点的高度作为与海平面的距离;例如,该高度用于索引纹理图像,将白雪映射到峰上,将绿色草映射到山脚。

如果纹理生成函数GL_EYE_LINEAR,则函数

Equation showing the glTexGen function when the texture generation function is GL_EYE_LINEAR.

是使用,其中

Equation showing the eye coordinates of the vertex.

和 x?、y?、z?和 w?是顶点、p1、p2、p3 和 p4 的眼坐标,是 参数中提供的值,M 是 调用 glTexGen 时的 modelview 矩阵。 如果 M 条件差或单一,则生成的函数生成的纹理坐标可能不准确或未定义。

参数中的值在眼睛坐标中定义引用平面。 应用于它们的 modelview 矩阵在转换多边形顶点时不能相同。 此函数建立一个纹理坐标字段,可在移动对象上生成动态轮廓线。

如果 pname 为 GL_SPHERE_MAP,并且 coord 为 GL_S 或 GL_T,则 s 和 t 纹理坐标将按如下所示生成。 让 u 成为从原点到眼坐标 (多边形顶点的单位向量) 。 在转换到眼睛坐标后,让 n 成为当前正态。 让 f = (fx ( ) fy ( ) fz) T 是反射向量,这样

Equation showing the reflection vector as a function of unit vector and current normal.

最后,让我们

Equation showing m as a function of reflection vector.

然后,分配给 i 和 t 纹理坐标的值是

Equation showing values assigned to the i and t texture coordinates.

可以通过将 glEnableglDisable 与符号纹理坐标名称之一配合使用来启用或禁用纹理坐标生成函数, (GL_TEXTURE_GEN_S、GL_TEXTURE_GEN_T、GL_TEXTURE_GEN_R或GL_TEXTURE_GEN_Q) 作为参数。 启用此函数后,将根据与该坐标关联的生成函数计算指定的纹理坐标。 禁用函数后,后续顶点将从当前纹理坐标集中获取指定的纹理坐标。 最初,所有纹理生成函数都设置为GL_EYE_LINEAR并禁用。 这两个平面公式 (1,0,0,0) ;两个 t 平面公式 (0,1,0,0) ;和所有 r 和 q 平面公式 (0,0,0,0) 。

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

glGetTexGen
glIsEnabled 与参数GL_TEXTURE_GEN_S
带参数GL_TEXTURE_GEN_T的 glIsEnabled
glIsEnabled 与参数GL_TEXTURE_GEN_R
glIsEnabled 与参数GL_TEXTURE_GEN_Q

要求

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

Opengl32.lib
DLL
Opengl32.dll

另请参阅

glBegin

glEnd

glCopyTexImage2D

glCopyTexSubImage2D

glGetTexGen

glIsEnabled

glTexEnv

glTexImage1D

glTexParameter

glTexSubImage1D

glTexSubImage2D