glGetTexImage 函数

glGetTexImage 函数返回纹理图像。

语法

void WINAPI glGetTexImage(
   GLenum target,
   GLint  level,
   GLenum format,
   GLenum type,
   GLvoid *pixels
);

参数

目标

指定要获取的纹理。 接受GL_TEXTURE_1D和GL_TEXTURE_2D。

level

所需图像的详细级别编号。 级别 0 是基本映像级别。 级别 n第 n 个 mipmap 缩减图像。

format

返回数据的像素格式。 支持的格式为GL_RED、GL_GREEN、GL_BLUE、GL_ALPHA、GL_RGB、GL_RGBA、GL_LUMINANCE、GL_BGR_EXT、GL_BGRA_EXT和GL_LUMINANCE_ALPHA。

type

返回数据的像素类型。 支持的类型包括GL_UNSIGNED_BYTE、GL_BYTE、GL_UNSIGNED_SHORT、GL_SHORT、GL_UNSIGNED_INT、GL_INT和GL_FLOAT。

像素

返回纹理图像。 应该是指向按 类型指定的类型的数组的指针。

返回值

此函数不返回值。

错误代码

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

名称 含义
GL_INVALID_ENUM
目标格式类型 不是接受的值。
GL_INVALID_VALUE
级别 小于零或大于 log2 (max) ,其中 max 是返回GL_MAX_TEXTURE_SIZE的值。
GL_INVALID_OPERATION
在对 glBegin 的调用和 对 glEnd 的相应调用之间调用了该函数。

备注

glGetTexImage 函数将纹理图像返回为像素目标参数指定所需的纹理图像是 glTexImage1D (GL_TEXTURE_1D) 指定的,还是由 glTexImage2D ( (GL_TEXTURE_2D) 指定的。 级别参数指定所需图像的详细信息级别编号。 格式类型参数指定所需图像数组的格式和类型。 有关 格式类型 参数可接受的值的说明,请参阅 glTexImage1DglDrawPixels

最好将选定的内部四分量纹理图像视为图像大小的 RGBA 颜色缓冲区,从而最好理解 glGetTexImage 的操作。 然后,glGetTexImage 的语义与使用相同格式类型调用的 glReadPixels 的语义相同,x 和y 设置为零,宽度设置为纹理图像的宽度 (包括边框(如果指定了边框) ,高度设置为 1D 图像)或纹理图像的高度 ((包括边框) 如果为二维图像指定了一个) ,

由于内部纹理图像是 RGBA 图像,因此不接受像素格式GL_COLOR_INDEX、GL_STENCIL_INDEX和GL_DEPTH_COMPONENT,并且不接受像素类型GL_BITMAP。

如果所选纹理图像不包含四个组件,则应用以下映射。 单分量纹理被视为 RGBA 缓冲区,红色设置为单分量值,绿色、蓝色和 alpha 设置为零。

双分量纹理被视为 RGBA 缓冲区,红色设置为分量零的值,alpha 设置为组件 1 的值,绿色和蓝色设置为零。 最后,三分量纹理被视为 RGBA 缓冲区,红色设置为分量零,绿色设置为分量 1,蓝色设置为分量 2,alpha 设置为零。

若要确定所需的 像素大小,请使用 glGetTexLevelParameter 来确定内部纹理图像的尺寸,然后根据 格式类型按每个像素所需的存储缩放所需的像素数。 请务必考虑像素存储参数,尤其是GL_PACK_ALIGNMENT。

如果生成错误,则不会对 像素的内容进行更改。

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

具有参数GL_PACK_ALIGNMENT和其他参数的 glGet

带参数GL_TEXTURE_WIDTH的 glGetTexLevelParameter

带参数GL_TEXTURE_HEIGHT的 glGetTexLevelParameter

带参数的 glGetTexLevelParameter GL_TEXTURE_BORDER

带参数的 glGetTexLevelParameter GL_TEXTURE_COMPONENTS

要求

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

Opengl32.lib
DLL
Opengl32.dll

另请参阅

glBegin

glDrawPixels

glEnd

glGetTexLevelParameter

glReadPixels

glTexImage1D

glTexImage2D