glCopyTexSubImage2D 函数

glCopyTexSubImage2D 函数从 framebuffer 复制二维纹理图像的子图像。

语法

void WINAPI glCopyTexSubImage2D(
   GLenum  target,
   GLint   level,
   GLint   xoffset,
   GLint   yoffset,
   GLint   x,
   GLint   y,
   GLsizei width,
   GLsizei height
);

参数

目标

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

level

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

xoffset

纹理数组中 x 方向的纹素偏移量。

yoffset

纹理数组中 y 方向的纹素偏移量。

x

要复制的像素行左下角的窗口 x 平面坐标。

y

要复制的像素行左下角的窗口 y 平面坐标。

width

纹理图像的子图像的宽度。 指定宽度为零的纹理子图像不起作用。

height

纹理图像的子图像的高度。 指定宽度为零的纹理子图像不起作用。

返回值

此函数不返回值。

错误代码

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

名称 含义
GL_INVALID_ENUM
target 不是接受的值。
GL_INVALID_VALUE
level 小于零或大于 对数2 (max) ,其中 max 是返回的值 GL_MAX_TEXTURE_SIZE。
GL_INVALID_VALUE
xoffset 小于 边框 或 (xoffset + 宽度) 大于 (w + 边框) , yoffset 小于 边框,或 (yoffset + 高度) 大于 (h + 边框) ,其中 w 为GL_TEXTURE_WIDTH, 边框 GL_TEXTURE_BORDER。 请注意, w 包含两倍的 边框 宽度。
GL_INVALID_VALUE
width 小于 边框y 小于 边框,其中 边框 是纹理数组的边框宽度。
GL_INVALID_OPERATION
纹理数组不是由以前的 glTexImage1D 操作定义的。
GL_INVALID_OPERATION
在对 glBegin 的调用和对 glEnd 的相应调用之间调用了函数。

备注

glCopyTexSubImage2D 函数将二维纹理图像的矩形部分替换为当前 framebuffer 的像素,而不是从main内存替换,就像 glTexSubImage2D 那样。

xy 窗口坐标开头的像素矩形以及尺寸 宽度高度 将纹理数组的一部分替换为索引 xoffsetxoffset + (宽度 - 1) ,索引为 yoffsetyoffset + (宽度 - 1) ,位于 级别指定的 mipmap 级别。 纹理数组中的目标矩形不能包含最初指定的纹理数组之外的任何纹素。

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

如果当前 framebuffer 的指定矩形中的任何像素位于与当前呈现上下文关联的读取窗口之外,则为这些像素获取的值是未定义的。 不会对指定纹理数组的 internalFormatwidthheightborder 参数或指定纹理子图像外部的纹素值进行更改。

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

注意

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

纹理在颜色索引模式下不起作用。 glPixelStoreglPixelTransfer 函数对纹理图像的影响方式与使用 glDrawPixels 绘制像素的方式完全一样。

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

glGetTexImage

glIsEnabled with argument GL_TEXTURE_2D

要求

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

Opengl32.lib
DLL
Opengl32.dll

另请参阅

glBegin

glCopyPixels

glCopyTexSubImage1D

glDrawPixels

glEnd

glFog

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage2D

glTexSubImage2D

glTexParameter