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 函数可以检索以下错误代码。
名称 | 含义 |
---|---|
|
target、 format 或 type 不是接受的值。 |
|
level 小于零或大于 log2 (max) ,其中 max 是GL_MAX_TEXTURE_SIZE的返回值。 |
|
函数是在 对 glBegin 的调用和对 glEnd 的相应调用之间调用的。 |
备注
glGetTexImage 函数将纹理图像返回为像素。 目标参数指定所需的纹理图像是由 glTexImage1D (GL_TEXTURE_1D) 指定的,还是由 glTexImage2D (GL_TEXTURE_2D) 指定的。 level 参数指定所需图像的详细级别编号。 format 和 type 参数指定所需图像数组的格式和类型。 有关 格式 和 类型 参数的可接受值的说明,请参阅 glTexImage1D 和 glDrawPixels。
最好通过将所选内部四分量纹理图像视为图像大小的 RGBA 颜色缓冲区来理解 glGetTexImage 的操作。 然后,glGetTexImage 的语义与具有相同格式和类型的glReadPixels 的语义相同,x 和 y 设置为零,宽度设置为纹理图像的宽度 (包括边框(如果指定) 了边框),对于一维图像,高度设置为 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 [仅限桌面应用] |
标头 |
|
库 |
|
DLL |
|