glTexParameterfv 函数

设置纹理参数。

语法

void WINAPI glTexParameterfv(
         GLenum  target,
         GLenum  pname,
   const GLfloat *params
);

parameters

目标

目标纹理,必须是GL_TEXTURE_1D或GL_TEXTURE_2D。

pname

单个值纹理参数的符号名称。 pname 中接受以下符号。

含义
GL_TEXTURE_MIN_FILTER
每当纹理化的像素映射到大于一个纹理元素的区域时,将使用纹理缩小函数。 有六个定义的缩小函数。 其中两个使用最接近的一个或最近的四个纹理元素来计算纹理值。 其他四个使用 mipmap。
mipmap 是一组有序的数组,表示同一图像的分辨率逐渐降低。 如果纹理的尺寸为 2nx2m ,则最大 (n,m) + 1 mipmap。 第一个 mipmap 是原始纹理,尺寸为 2nx2m。 每个后续 mipmap 的维度为 2k1x2l1,其中 2kx2l 是上一个 mipmap 的维度,直到 k = 0 或 l = 0。 此时,后续 mipmap 的维度为 1x2l1 或 2k1x1,直到最终的 mipmap(其维度为 1x1)。 Mipmap 是使用 glTexImage1DglTexImage2D 和指示 mipmap 顺序的详细信息级别参数定义的。 级别 0 是原始纹理;level bold max (n, m) 是最终的 1x1 mipmap。
GL_TEXTURE_MAG_FILTER
当纹理化的像素映射到小于或等于一个纹理元素的区域时,将使用纹理放大函数。 它将纹理放大函数设置为 GL_NEAREST 或 GL_LINEAR。
GL_TEXTURE_WRAP_S
将纹理坐标 的 wrap 参数设置为 GL_CLAMP 或 GL_REPEAT。 GL_CLAMP会导致 将 坐标固定到 [0,1] 范围,并且有助于防止在将单个图像映射到对象时包装项目。 GL_REPEAT会导致忽略坐标的整数部分;OpenGL 仅使用小数部分,从而创建重复模式。 仅当包装设置为“GL_CLAMP”时,才访问边框纹理元素。 最初,GL_TEXTURE_WRAP_S 设置为 GL_REPEAT。
GL_TEXTURE_WRAP_T
将纹理坐标 t 的 wrap 参数设置为 GL_CLAMP 或 GL_REPEAT。 请参阅GL_TEXTURE_WRAP_S下的讨论。 最初,GL_TEXTURE_WRAP_T设置为 GL_REPEAT。
GL_TEXTURE_BORDER_COLOR
设置边框颜色。 params 参数包含四个值,这些值构成纹理边框的 RGBA 颜色。 整数颜色分量按线性方式解释,使最正整数映射到 1.0,最负整数映射到 1.0。 指定值时,这些值将固定到 [0,1] 范围。 最初,边框颜色 (0、0、0、0) 。
GL_TEXTURE_PRIORITY
指定当前绑定纹理的纹理居住优先级。 允许的值在 [0, 1] 范围内。 有关详细信息 ,请参阅 glPrioritizeTexturesglBindTexture

params

指向存储 pname 值的数组的指针。 params 参数提供一个函数,用于将纹理缩小为以下值之一。

含义
GL_NEAREST
返回最接近曼哈顿 () 要纹理的像素中心的纹理元素的值。
GL_LINEAR
返回最接近要纹理的像素中心的四个纹理元素的加权平均值。 这些元素可以包括边框纹理元素,具体取决于GL_TEXTURE_WRAP_S、GL_TEXTURE_WRAP_T和确切映射的值。 GL_NEAREST通常比GL_LINEAR快,但它可以生成边缘更锐利的纹理图像,因为纹理元素之间的过渡不太平滑。 GL_TEXTURE_MAG_FILTER 的默认值为 GL_LINEAR。
GL_NEAREST_MIPMAP_NEAREST
选择与要纹理的像素大小最匹配的 mipmap,并使用GL_NEAREST条件 (最接近像素中心) 纹理元素来生成纹理值。
GL_LINEAR_MIPMAP_NEAREST
选择与要纹理的像素大小最匹配的 mipmap,并使用GL_LINEAR条件 (最接近像素中心) 四个纹理元素的加权平均值来生成纹理值。
GL_NEAREST_MIPMAP_LINEAR
选择与要纹理的像素大小最匹配的两个 mipmap,并使用GL_NEAREST条件 (最接近像素中心) 纹理元素,从每个 mipmap 生成纹理值。 最终纹理值是这两个值的加权平均值。
GL_LINEAR_MIPMAP_LINEAR
选择与要纹理的像素大小最匹配的两个 mipmap,并使用GL_LINEAR条件 (最接近像素中心) 四个纹理元素的加权平均值,以从每个 mipmap 生成纹理值。 最终纹理值是这两个值的加权平均值。

params 参数提供一个函数,用于将纹理放大为以下值之一。

含义
GL_NEAREST
返回最接近曼哈顿 () 要纹理的像素中心的纹理元素的值。
GL_LINEAR
返回最接近要纹理的像素中心的四个纹理元素的加权平均值。 这些元素可以包括边框纹理元素,具体取决于GL_TEXTURE_WRAP_S、GL_TEXTURE_WRAP_T和确切映射的值。 GL_NEAREST通常比GL_LINEAR快,但它可以生成边缘更锐利的纹理图像,因为纹理元素之间的过渡不太平滑。 GL_TEXTURE_MAG_FILTER 的默认值为 GL_LINEAR。

返回值

此函数不返回值。

错误代码

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

名称 含义
GL_INVALID_ENUM
targetpname 不是接受的已定义值之一,或者 参数 应具有基于 pname) 的值 (定义的常量值时,而不是。
GL_INVALID_OPERATION
在对 glBegin 的调用和对 glEnd 的相应调用之间调用了函数。

备注

纹理映射是一种将图像应用于对象表面的技术,就像图像是贴纸或玻璃纸收缩包装一样。 图像是在纹理空间中创建的,使用 (st) 坐标系。 纹理是一维或二维图像,以及一组参数,用于确定样本如何从图像派生。

glTexParameter 函数将参数中的值分配给指定为 pname 的纹理参数。 目标参数定义目标纹理,GL_TEXTURE_1D或GL_TEXTURE_2D。

随着在缩小过程中对更多纹理元素进行采样,别名项目会越来越明显。 虽然GL_NEAREST和GL_LINEAR缩小函数可能比其他四个函数更快,但它们仅采样一个或四个纹理元素以确定要呈现的像素的纹理值,并可以产生摩尔图案或不规则的过渡。 GL_TEXTURE_MIN_FILTER 的默认值为GL_NEAREST_MIPMAP_LINEAR。

假设通过使用参数GL_TEXTURE_1D或GL_TEXTURE_2D) 调用 glEnable (启用纹理,并且GL_TEXTURE_MIN_FILTER设置为需要 mipmap 的函数之一。 如果当前定义的纹理图像的尺寸 (以前调用 glTexImage1DglTexImage2D) 未遵循 mipmap 的正确顺序,或者定义的纹理图像少于所需数量,或者纹理图像集具有不同数量的纹理组件,则就像禁用了纹理映射一样。 线性筛选仅在二维纹理中访问四个最接近的纹理元素。 在一维纹理中,线性筛选访问两个最近的纹理元素。 以下函数检索 与 glTexParameterfglTexParameteriglTexParameterfvglTexParameteriv 相关的信息:

glGetTexParameter

要求

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

Opengl32.lib
DLL
Opengl32.dll

请参阅

glBegin

glBindTexture

glCopyPixels

glCopyTexImage1D

glCopyTexImage2D

glCopyTexSubImage2D

glDrawPixels

glEnd

glGetTexParameter

glPixelStore

glPixelTransfer

glPrioritizeTextures

glTexEnv

glTexGen

glTexImage1D

glTexImage2D

glTexSubImage1D

glTexSubImage2D