glTexImage1D 函数
glTexImage1D 函数指定一维纹理图像。
语法
void WINAPI glTexImage1D(
GLenum target,
GLint level,
GLint internalformat,
GLsizei width,
GLint border,
GLint format,
GLenum type,
const GLvoid *pixels
);
参数
-
目标
-
目标纹理。 必须GL_TEXTURE_1D。
-
level
-
详细信息级别编号。 级别 0 是基础映像级别。 级别 n 是 nTh 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_ALPHA4、GL_LUMINANCE12_ALPHA12、GL_LUMINANCE16_ALPHA16、GL_INTENSITY、 GL_INTENSITY4、GL_INTENSITY8、GL_INTENSITY12、GL_INTENSITY16、GL_RGB、GL_R3_G3_B2、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,必须为 2n + 2 (边框) 。 纹理图像的高度为 1。
-
边境
-
边框的宽度。 必须为 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(绿色和蓝色)和 1.0(alpha)组合成 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 设备无关位图 (DDB) 相匹配的格式。 因此,应用程序可以通过 Windows 函数调用和 OpenGL 像素函数调用使用相同的数据。- GL_LUMINANCE
每个元素都是单个亮度值。 它转换为浮点,然后通过将红色、绿色和蓝色的亮度值复制三次,并附加 1.0 作为 alpha,将其组合成 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 函数可以检索以下错误代码。
名称 | 含义 |
---|---|
|
target 不是GL_TEXTURE。 |
|
format 不是接受 的格式 常量。 仅接受除 GL_STENCIL_INDEX 和 GL_DEPTH_COMPONENT 以外的格式常量。 有关可能值的列表,请参阅 格式 的参数说明。 |
|
type 不是 类型 常量。 |
|
type 为GL_BITMAP且 格式 未GL_COLOR_INDEX。 |
|
level 小于零或大于 log2max,其中 max 是GL_MAX_TEXTURE_SIZE的返回值。 |
|
internalformat 不是 1、2、3 或 4。 |
|
width 小于零或大于 2 + GL_MAX_TEXTURE_SIZE,或者无法表示为 2n + 2 (某些整数值 n 的边框) 。 |
|
边框 不是 0 或 1。 |
|
函数是在 对 glBegin 的调用和对 glEnd 的相应调用之间调用的。 |
备注
glTexImage1D 函数指定一维纹理图像。 纹理化将指定 纹理图像 的一部分映射到启用了纹理的每个图形基元上。 使用带参数GL_TEXTURE_1D 的 glEnable 和 glDisable 启用和禁用一维纹理。
纹理图像是使用 glTexImage1D 定义的。 参数描述纹理图像的参数,例如宽度、边框宽度、详细级别编号 (见 glTexParameter) 以及提供的颜色分量数。 最后三个参数描述图像在内存中的表示方式。 这些参数与用于 glDrawPixel 的像素格式相同。
数据作为有符号或无符号字节、短字节或长字节序列或单精度浮点值从 像素 中读取,具体取决于 类型。 根据 格式,这些值分组为一组、二个值、三个值或四个值,以形成元素。 如果 type 为GL_BITMAP,则数据被视为 (的无符号字节字符串,并且必须GL_COLOR_INDEX) 格式 。 每个数据字节被视为 8 个 1 位元素,位排序由GL_UNPACK_LSB_FIRST (请参阅 glPixelStore) 。
纹理图像每个纹理元素最多可以有四个分量,具体取决于 组件。 单分量纹理图像仅使用从像素中提取的 RGBA 颜色的红色分 量。 双组件映像使用 R 和 A 值。 三分量映像使用 R、G 和 B 值。 由四分量构成的映像使用所有 RGBA 分量。
纹理在颜色索引模式下不起作用。
纹理图像可以用 与 glDrawPixels 命令中的像素相同的数据格式表示,但不能使用GL_STENCIL_INDEX和GL_DEPTH_COMPONENT。 glPixelStore 和 glPixelTransfer 模式对纹理图像的影响方式与它们影响 glDrawPixel 的方式完全相同。
宽度为零的纹理图像指示 null 纹理。 如果为细节级别 0 指定了 null 纹理,则它就像禁用了纹理一样。
以下函数检索与 glTexImageID 相关的信息:
glIsEnabled with argument GL_TEXTURE_1D
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 |
Windows 2000 Server [仅限桌面应用] |
标头 |
|
库 |
|
DLL |
|
另请参阅
反馈
提交和查看相关反馈