glTexImage2D 函数

glTexImage2D 函数指定二维纹理图像。

语法

void WINAPI glTexImage2D(
         GLenum  target,
         GLint   level,
         GLint   internalformat,
         GLsizei width,
         GLsizei height,
         GLint   border,
         GLint   format,
         GLenum  type,
   const GLvoid  *pixels
);

parameters

目标

目标纹理。 必须是 GL _ 纹理 _ 2D。

level

详细信息级别编号。 级别 0 是基础映像级别。 级别 n第 n 个 mipmap 缩减图像。

internalformat

纹理中的颜色分量数。 必须是 1、2、3 或 4,或以下符号常量之一:GL _ ALPHA、GL _ ALPHA4、GL _ ALPHA8、 GL _ ALPHA12、GL _ ALPHA16、GL _ _ LUMINANCE、GL LUMINANCE4、GL _ _ LUMINANCE8、GL LUMINANCE12、GL _ _ _ LUMINANCE16、GL _ LUMINANCE _ ALPHA、GL LUMINANCE4 ALPHA4、GL _ LUMINANCE6 _ ALPHA2、GL _ _ _ LUMINANCE8 _ ALPHA8、GL _ LUMINANCE12 _ ALPHA12、GL _ LUMINANCE16 _ ALPHA16、GL _ GL _ 强度4、GL _ 强度8、GL _ 强度12、GL _ 强度16、GL _ _ R3 G3 _ B2、GL _ RGB、GL _ RGB4、GL _ RGB5、GL _ RGB8、GL _ RGB10、GL _ RGB12、 GL _ RGB16、GL _ _ RGBA、GL _ RGBA2、GL RGBA4、GL _ RGB5 _ A1、GL _ RGBA8、GL _ RGB10 _ A2、GL _ RGBA12 或 GL _ RGBA16。

width

纹理图像的宽度。 对于一些 整数 n, ( 2 n + 2) 的边框。

height

纹理图像的高度。 对于一些 整数 m, (2 m + 2) 边框。

边境

边框的宽度。 必须为 0 或 1。

format

像素数据的格式。 它可以假定为九个符号值之一。

含义
GL _ COLOR _ INDEX
每个元素都是单个值,即颜色索引。 它转换为固定点 (,二进制点) 右侧未指定的 0 位,根据 GL INDEX SHIFT 的值和符号向左或向右移动,并添加到 GL _ _ INDEX OFFSET _ _ (请参阅 glPixelTransfer) 。 生成的索引使用 GL PIXEL MAP I TO R、GL PIXEL MAP I TO G、GL PIXEL MAP I TO B 和 GL PIXEL MAP I TO A 表转换为一组颜色组件,并固定到范围 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [ 0,1。 ]
GL _ RED
每个元素都是一个红色组件。 它通过为绿色和蓝色附加 0.0,为 alpha 附加 1.0,将其转换为浮点并组合为 RGBA 元素。 然后,每个组件乘以有签名比例因子 GL c SCALE,添加到有签名偏差 GL c BIAS,并固定到范围 _ _ _ _ [ 0,1 ] (请参阅 glPixelTransfer) 。
GL _ GREEN
每个元素都是一个绿色组件。 它通过附加 0.0(红色和蓝色)和 1.0(对于 alpha)转换为浮点并组合为 RGBA 元素。 然后,每个组件乘以有签名比例因子 GL c SCALE,添加到有签名偏差 GL c BIAS,并固定到范围 _ _ _ _ [ 0,1 (] 请参阅 glPixelTransfer) 。
GL _ BLUE
每个元素都是一个蓝色组件。 它通过附加 0.0(红色和绿色)和 1.0(对于 alpha)转换为浮点并组合为 RGBA 元素。 然后,每个组件乘以有签名比例因子 GL c SCALE,添加到有签名偏差 GL c BIAS,并固定到范围 _ _ _ _ [ 0,1 ] (请参阅 glPixelTransfer) 。
GL _ ALPHA
每个元素都是一个红色组件。 它通过为红色、绿色和蓝色附加 0.0 来转换为浮点并组合为 RGBA 元素。 然后,每个组件乘以有签名比例因子 GL c SCALE,添加到有签名偏差 GL c BIAS,并固定到范围 _ _ _ _ [ 0,1 (] 请参阅 glPixelTransfer) 。
GL _ RGB
每个元素都是三倍的 RGB。 它通过附加 alpha 的 1.0 转换为浮点并组合为 RGBA 元素。 然后,每个组件乘以有签名比例因子 GL c SCALE,添加到有签名偏差 GL c BIAS,并固定到范围 _ _ _ _ [ 0,1 ] (请参阅 glPixelTransfer) 。
GL _ RGBA
每个元素都是一个完整的 RGBA 元素。 它转换为浮点。 然后,每个组件乘以有签名比例因子 GL c SCALE,添加到有签名偏差 GL c BIAS,并固定到范围 _ _ _ _ [ 0,1 (] 请参阅 glPixelTransfer) 。
GL _ BGR _ EXT
每个像素按以下顺序由三个组件组成:蓝色、绿色、红色。
GL _ BGR EXT 提供一种格式,该格式与 WINDOWS 与设备无关的位图的内存布局 (_ DIB) 。 因此,应用程序可以将相同的数据用于Windows调用和 OpenGL 像素函数调用。
GL _ BGRA _ EXT
每个像素按以下顺序由四个组件组成:蓝色、绿色、红色、alpha。 GL BGRA EXT 提供的格式与 WINDOWS与设备无关的位图的内存布局 (_ _ DIB) 。 因此,应用程序可以将相同的数据用于Windows调用和 OpenGL 像素函数调用。
GL _ LUMINANCE
每个元素都是单个亮度值。 它转换为浮点,然后通过复制红色、绿色和蓝色亮度值三次,并将 alpha 附加 1.0 来组合为 RGBA 元素。 然后,每个组件乘以有签名比例因子 GL c SCALE,添加到有签名偏差 GL c BIAS,并固定到范围 _ _ _ _ [ 0,1 ] (请参阅 glPixelTransfer) 。
GL _ LUMINANCE _ ALPHA
每个元素都是亮度/alpha 对。 它转换为浮点,然后通过复制红色、绿色和蓝色三次亮度值来组合为 RGBA 元素。 然后,每个组件乘以有签名比例因子 GL c SCALE,添加到有签名偏差 GL c BIAS,并固定到范围 _ _ _ _ [ 0,1 (] 请参阅 glPixelTransfer) 。

type

像素数据的数据类型。 接受以下符号值:GL _ UNSIGNED _ BYTE、GL _ BYTE、GL _ BITMAP、GL _ UNSIGNED _ SHORT、GL _ SHORT、GL _ UNSIGNED _ INT、GL _ INT 和 GL _ FLOAT。

像素

指向内存中图像数据的指针。

返回值

此函数不返回值。

错误代码

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

名称 含义
GL _ 无效 _ 枚举
target 不是 GL _ TEXTURE _ 2D。
GL _ 无效 _ 枚举
format 不是接受 的格式 常量。 仅接受 GL _ STENCIL INDEX 和 _ GL DEPTH _ COMPONENT _ 外的格式常量。 有关可能值 的列表, 请参阅格式的参数说明。
GL _ 无效 _ 枚举
type 不是 类型常量
GL _ 无效 _ 枚举
类型 为 GL _ BITMAP,格式 不是 GL _ COLOR _ INDEX。
GL _ 无效 _ 值
level 小于零或大于 log2 max,其中 max 是 GL _ MAX TEXTURE SIZE 的 _ 返回 _ 值。
GL _ 无效 _ 值
internalformat 不是 1、2、3 或 4。
GL _ 无效 _ 值
宽度 或高度小于零或大于 2 + GL MAX 纹理大小,或者对于 n 的一些整数值,它不能表示为 _ _ _ 2 n + 2 (边框) n 。
GL _ 无效 _ 值
border 不是 0 或 1。
GL _ 无效 _ 操作
函数是在对 glBegin 的调用与对 glEnd 的相应调用 之间调用的

备注

glTexImage2D 函数指定二维纹理图像。 纹理将指定纹理图像的 一部分映射到 启用了纹理的每个图形基元。 使用 glEnableglDisable 和参数 GL _ TEXTURE 2D 启用和禁用二维 _ 纹理。

纹理图像是使用 glTexImage2D 定义的。 参数描述纹理图像的参数,例如高度、宽度、边框的宽度、详细信息级别数字 (请参阅 glTexParameter) 以及提供的颜色组件数。 最后三个参数描述了图像在内存中的表示方式。 这些参数与用于 glDrawPixels 的像素格式相同

数据 以有符号 或无符号字节、短或长或单精度浮点值序列(具体取决于类型)从像素 读取。 这些值分为一组、两个值、三个值或四个值(具体取决于格式)以形成元素。 如果 类型 为 GL BITMAP,则数据被视为包含无符号字节的字符串 (_ 格式 必须为 GL _ COLOR INDEX _) 。 每个数据字节都被视为八个 1 位元素,位顺序由 GL _ UNPACK _ LSB FIRST 确定 _ (请参阅 glPixelStore) 。 有关类型参数可接受的值的说明,请参阅 glDrawPixels。

纹理图像每个纹理元素最多只能有四个组件,具体取决于 组件。 单组件纹理图像仅使用从像素 中提取的 RGBA 颜色的红色 分量。 双组件映像使用 R 和 A 值。 由三个组件构成的图像使用 R、G 和 B 值。 四组件映像使用所有 RGBA 组件。

在颜色索引模式下,文本设置不起作用。

纹理图像可以表示为与 glDrawPixels 命令中的像素相同的数据格式,但不能使用 GL _ STENCIL INDEX 和 _ GL _ DEPTH _ COMPONENT。 glPixelStoreglPixelTransfer模式对纹理图像的影响方式与它们影响 glDrawPixels 完全相同。

高度或宽度为零的纹理图像指示 null 纹理。 如果为详细信息级别 0 指定了 null 纹理,则就像禁用了纹理一样。

以下函数检索与 glTexImage2D 有关的信息

glGetTexImage

glIsEnabled 与参数 GL _ TEXTURE _ 2D

要求

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

Opengl32.lib
DLL
Opengl32.dll

另请参阅

glBegin

glDrawPixels

glEnd

glFog

glIsEnabled

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage1D

glTexParameter