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
targetformattype 不是接受的值。
GL_INVALID_VALUE
level 小于零或大于 log2 (max) ,其中 max 是GL_MAX_TEXTURE_SIZE的返回值。
GL_INVALID_OPERATION
函数是在 对 glBegin 的调用和对 glEnd 的相应调用之间调用的。

备注

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

最好通过将所选内部四分量纹理图像视为图像大小的 RGBA 颜色缓冲区来理解 glGetTexImage 的操作。 然后,glGetTexImage 的语义与具有相同格式类型的glReadPixels 的语义相同,xy 设置为零,宽度设置为纹理图像的宽度 (包括边框(如果指定) 了边框),对于一维图像,高度设置为 1,或设置为纹理图像的高度 (包括边框, 如果为二维图像指定了) ,则为 。

由于内部纹理图像是 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 相关的信息:

glGet with argument GL_PACK_ALIGNMENT and others

带参数GL_TEXTURE_WIDTH的 glGetTexLevelParameter

带参数GL_TEXTURE_HEIGHT的 glGetTexLevelParameter

带参数GL_TEXTURE_BORDER的 glGetTexLevelParameter

带参数GL_TEXTURE_COMPONENTS的 glGetTexLevelParameter

要求

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

Opengl32.lib
DLL
Opengl32.dll

另请参阅

glBegin

glDrawPixels

glEnd

glGetTexLevelParameter

glReadPixels

glTexImage1D

glTexImage2D