glCopyTexImage2D 函数

glCopyTexImage2D 函数将帧缓冲区中的像素复制到二维纹理图像中。

语法

void WINAPI glCopyTexImage2D(
   GLenum  target,
   GLint   level,
   GLenum  internalFormat,
   GLint   x,
   GLint   y,
   GLsizei width,
   GLsizei height,
   GLint   border
);

参数

目标

图像数据将更改为的目标。 必须具有值GL_TEXTURE_2D。

level

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

internalFormat

纹理数据的内部格式和分辨率。 internalFormat 不接受值 1、2、3 和 4。 参数可以假定以下符号值之一。

常数 R 位 G 位 B 位 A Bits L 位 I 位
GL_ALPHA
GL_ALPHA4 4
GL_ALPHA8 8
GL_ALPHA12 12
GL_ALPHA16 16
GL_LUMINANCE
GL_LUMINANCE4 4
GL_LUMINANCE8 8
GL_LUMINANCE12 12
GL_LUMINANCE16 16
GL_LUMINANCE_ALPHA
GL_LUMINANCE4_ALPHA4 4 4
GL_LUMINANCE6_ALPHA2 2 6
GL_LUMINANCE8_ALPHA8 8 8
GL_LUMINANCE12_ALPHA4 4 12
GL_LUMINANCE12_ALPHA12 12 12
GL_LUMINANCE16_ALPHA16 16 16
GL_INTENSITY
GL_INTENSITY4 4
GL_INTENSITY8 8
GL_INTENSITY12 12
GL_INTENSITY16 16
GL_RGB
GL_R3_G3_B2 3 3 2
GL_RGB4 4 4 4
GL_RGB5 5 5 5
GL_RGB8 8 8 8
GL_RGB10 10 10 10
GL_RGB12 12 12 12
GL_RGB16 16 16 16
GL_RGBA
GL_RGBA2 2 2 2 2
GL_RGBA4 4 4 4 4
GL_RGB5_A1 5 5 5 1
GL_RGBA8 8 8 8 8
GL_RGB10_A2 10 10 10 2
GL_RGBA12 12 12 12 12
GL_RGBA16 16 16 16 16

x

要复制的像素矩形区域左下角的窗口 x 平面坐标。

y

要复制的像素矩形区域左下角的窗口 y 平面坐标。

width

纹理图像的宽度。 对于某些整数 n,必须为 2n + 2 * 边框

height

纹理图像的高度。 对于某些整数 n,必须为 2n + 2 * 边框

边境

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

返回值

此函数不返回值。

错误代码

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

名称 含义
GL_INVALID_ENUM
target 不是接受的值。
GL_INVALID_VALUE
level 小于零或大于 log2 max,其中 max 是GL_MAX_TEXTURE_SIZE的返回值。
GL_INVALID_VALUE
边框 不是零或 1。
GL_INVALID_VALUE
width 小于零,大于 2 + GL_MAX_TEXTURE_SIZE,或宽度不能表示为 2n + 2 * 一些整数 n边框
GL_INVALID_OPERATION
函数是在 对 glBegin 的调用和对 glEnd 的相应调用之间调用的。

备注

glCopyTexImage2D 函数使用来自当前帧缓冲区的像素定义二维纹理图像,而不是像 glTexImage2D 那样使用main内存中的像素。

使用 级别指定的 mipmap 级别,纹理数组定义为像素的矩形,其左下角位于坐标 xy,宽度等于 宽度 + (2 * 边框) ,高度等于 高度 + (2 * 边框) 。 纹理数组的内部格式是使用 internalFormat 参数指定的。

glCopyTexImage2D 函数处理行中的像素的方式与 glCopyPixels 相同,不同之处在于,在像素的最终转换之前,所有像素分量值都固定到范围 [0,1] 并转换为纹理的内部格式,以便在纹理数组中存储。 像素排序由与较低的 st 纹理坐标对应的低 xy 坐标确定。 如果当前 framebuffer 的指定行中的任何像素位于与当前呈现上下文关联的窗口之外,则其值未定义。

不能在显示列表中包括对 glCopyTexImage2D 的 调用。

注意

glCopyTexImage2D 函数仅在 OpenGL 版本 1.1 或更高版本中可用。

纹理在颜色索引模式下不起作用。 glPixelStoreglPixelTransfer 函数对纹理图像的影响方式与它们影响 glDrawPixel 的方式完全相同。

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

glIsEnabled with argument GL_TEXTURE_2D

要求

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

Opengl32.lib
DLL
Opengl32.dll

另请参阅

glBegin

glCopyTexImage1D

glDrawPixels

glEnd

glFog

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage1D

glTexImage2D

glTexParameter