名称
glCopyTexSubImage2D - 复制二维纹理子图像
C规范
void glCopyTexSubImage2D( GLenum target,
GLint level,
GLint xoffset,
GLint yoffset,
GLint x,
GLint y,
GLsizei width,
GLsizei height);
参数
target
指定活动纹理单元的目标纹理。必须是GL_TEXTURE_2D,GL_TEXTURE_CUBE_MAP_POSITIVE_X,GL_TEXTURE_CUBE_MAP_NEGATIVE_X,GL_TEXTURE_CUBE_MAP_POSITIVE_Y,GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,GL_TEXTURE_CUBE_MAP_POSITIVE_Z或GL_TEXTURE_CUBE_MAP_NEGATIVE_Z。
level
指定详细级别。 0级是基本图像级别。级别n是第n个mipmap缩小图像。
x,y
指定要复制的像素矩形区域左下角的窗口坐标。
width
指定纹理图像的宽度。所有实现都支持至少64个纹素宽的2D纹理图像和至少16个纹素宽的立方体映射纹理图像。
height
指定纹理图像的高度。所有实现都支持至少64个纹素高的2D纹理图像和至少16个纹素高的立方体映射纹理图像。
xoffset
指定纹理数组中x方向的纹素偏移。
yoffset
指定纹理数组内y方向的纹素偏移量。
描述
纹理将指定纹理图像的一部分映射到纹理处于活动状态的每个图元上。当前片段着色器或顶点着色器使用内置纹理查找功能时,纹理处于活动状态。
glCopyTexSubImage2D用当前帧缓冲区中的像素(而不是客户端内存,如glTexSubImage2D的情况)替换二维纹理图像或立方体贴图纹理图像的矩形部分。
屏幕对齐的像素矩形,左下角为(x,y),宽度为width,高度为height,定义了由level指定的mipmap级别的纹理数组。
处理矩形中的像素就像调用format设置为GL_RGBA的glReadPixels一样,但是在转换RGBA值之后,该过程就会停止。后续处理与glTexSubImage2D描述的处理相同,首先将R,G,B和A值截断到0 1范围,然后转换为纹理的内部格式以存储在纹素阵列中。
纹理数组中的目标矩形可能不包括最初指定的纹理数组外的任何纹理像素。指定宽度或高度为零的子纹理不是错误,但这样的规范没有效果。
如果指定矩形内的任何像素位于与当前渲染上下文关联的帧缓冲区之外,则为这些像素获取的值为未定义的。
不会对指定纹理数组的internalformat,width或height参数或指定子区域外的纹素值进行更改。
注意
glCopyTexSubImage2D为使用glActiveTexture指定的当前纹理单元指定二维或立方体贴图纹理。
错误
GL_INVALID_ENUM:target不是GL_TEXTURE_2D,GL_TEXTURE_CUBE_MAP_POSITIVE_X,GL_TEXTURE_CUBE_MAP_NEGATIVE_X,GL_TEXTURE_CUBE_MAP_POSITIVE_Y,GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,GL_TEXTURE_CUBE_MAP_POSITIVE_Z或GL_TEXTURE_CUBE_MAP_NEGATIVE_Z。
GL_INVALID_ENUM:internalformat不是可接受的格式。
GL_INVALID_VALUE:target是六个立方体贴图2D图像目标之一并且width和height参数不相等。
GL_INVALID_VALUE:level小于0。
GL_INVALID_OPERATION:纹理数组尚未由先前的glTexImage2D或glCopyTexImage2D操作定义。
GL_INVALID_OPERATION:当前绑定的帧缓冲区格式不包含internalformat基本格式所需组件的超集。
GL_INVALID_FRAMEBUFFER_OPERATION:当前绑定的帧缓冲不是帧缓冲完成(即glCheckFramebufferStatus的返回值不是GL_FRAMEBUFFER_COMPLETE)
相关Gets
glGet 参数GL_MAX_TEXTURE_SIZE或GL_MAX_CUBE_MAP_TEXTURE_SIZE
另见
glActiveTexture,glCheckFramebufferStatus,glCopyTexImage2D,glTexImage2D,glTexParameter,glTexSubImage2D
版权
https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glCopyTexSubImage2D.xml
https://blog.csdn.net/flycatdeng
Copyright © 1991-2006 Silicon Graphics, Inc.本文档的许可是根据SGI Free Software B License.详见http://oss.sgi.com/projects/FreeB/.