| Name | 
 |  | 
 |     EXT_copy_texture | 
 |  | 
 | Name Strings | 
 |  | 
 |     GL_EXT_copy_texture | 
 |  | 
 | Version | 
 |  | 
 |     $Date: 1995/06/17 03:33:42 $ $Revision: 1.21 $ | 
 |  | 
 | Number | 
 |  | 
 |     10 | 
 |  | 
 | Dependencies | 
 |  | 
 |     EXT_texture is required. | 
 |     EXT_texture3D affects the definition of this extension. | 
 |     SGIS_texture_filter4 affects the definition of this extension. | 
 |     EXT_subtexture affects the definition of this extension. | 
 |  | 
 | Overview | 
 |  | 
 |     This extension defines methods to load texture images directly from the | 
 |     framebuffer.  Methods are defined for both complete and partial | 
 |     replacement of a texture image.  Because it is not possible to define | 
 |     an entire 3D texture using a 2D framebuffer image, 3D textures are | 
 |     supported only for partial replacement. | 
 |  | 
 | New Procedures and Functions | 
 |  | 
 |     void CopyTexImage1DEXT(enum target, | 
 |                            int level, | 
 |                            enum internalformat, | 
 |                            int x, | 
 |                            int y, | 
 |                            sizei width, | 
 |                            int border); | 
 |  | 
 |     void CopyTexImage2DEXT(enum target, | 
 |                            int level, | 
 |                            enum internalformat, | 
 |                            int x, | 
 |                            int y, | 
 |                            sizei width, | 
 |                            sizei height, | 
 |                            int border); | 
 |  | 
 |     void CopyTexSubImage1DEXT(enum target, | 
 |                               int level, | 
 |                               int xoffset, | 
 |                               int x, | 
 |                               int y, | 
 |                               sizei width); | 
 |  | 
 |     void CopyTexSubImage2DEXT(enum target, | 
 |                               int level, | 
 |                               int xoffset, | 
 |                               int yoffset, | 
 |                               int x, | 
 |                               int y, | 
 |                               sizei width, | 
 |                               sizei height); | 
 |  | 
 |     void CopyTexSubImage3DEXT(enum target, | 
 |                               int level, | 
 |                               int xoffset, | 
 |                               int yoffset, | 
 |                               int zoffset, | 
 |                               int x, | 
 |                               int y, | 
 |                               sizei width, | 
 |                               sizei height); | 
 |  | 
 | New Tokens | 
 |  | 
 |     None | 
 |  | 
 | Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) | 
 |  | 
 |     None | 
 |  | 
 | Additions to Chapter 3 of the 1.0 Specification (Rasterization) | 
 |  | 
 |     CopyTexImage1DEXT and CopyTexImage2DEXT are related to TexImage1D and | 
 |     TexImage2D in exactly the way that CopyPixels is related to DrawPixels. | 
 |     Rather than accepting image data from memory, they copy image data from | 
 |     the color buffer specified by the current ReadBuffer mode. | 
 |     CopyTexImage2DEXT accepts image data from a width+2*border pixel wide by | 
 |     height+2*border pixel high color buffer region whose lower-left pixel | 
 |     has window coordinates <x>,<y>.  If any pixels within this region are | 
 |     outside the window that is associated with the GL context, the values | 
 |     obtained for those pixels are undefined.  These pixel values are | 
 |     processed exactly as if CopyPixels had been called, but the process | 
 |     stops just before final conversion.  Subsequent processing is exactly | 
 |     as though TexImage2D had be called, beginning with the clamping of the | 
 |     pixel group components to [0,1].  Pixel ordering is such that lower X | 
 |     screen coordinates correspond to lower i texture coordinates, and lower | 
 |     Y screen coordinates correspond to lower j texture coordinates (refer to | 
 |     Figure 3.10 - A texture image and the coordinates used to access it, GL | 
 |     Specification).  The semantics and accepted values of the <target>, | 
 |     <level>, and <border> parameters are exactly equivalent to their | 
 |     TexImage2D counterparts, except that <target> does not accept | 
 |     PROXY_TEXTURE_2D_EXT.  The semantics of <internalformat> are identical | 
 |     to those of the <components> parameter of TexImage2D, except that | 
 |     values 1, 2, 3, and 4 are not accepted by CopyTexImage2DEXT. | 
 |  | 
 |     CopyTexImage1DEXT accepts image data from a width+2*border pixel wide | 
 |     by 1 pixel high color buffer region whose left-most pixel has window | 
 |     coordinates <x>,<y>.  If any pixels within this region are outside the | 
 |     window that is associated with the GL context, the values obtained for | 
 |     those pixels are undefined.  The pixels are processed just as those of | 
 |     CopyTexImage2DEXT are, and they define a texture such that lower X | 
 |     window coordinates correspond to lower i texture coordinates, as per | 
 |     Figure 3.10 of the GL Specification.  The semantics and accepted values | 
 |     of the <level>, <border>, and <internalformat> parameters are exactly | 
 |     those of CopyTexImage2DEXT.  <target> accepts only TEXTURE_1D. | 
 |      | 
 |     If EXT_subtexture is supported, this extension also defines | 
 |     CopyTexSubImage1DEXT and CopyTexSubImage2DEXT.  These commands are | 
 |     related to TexSubImage1DEXT and TexSubImage2DEXT in exactly the way | 
 |     that CopyPixels is related to DrawPixels.  Rather than accepting image | 
 |     data from memory, they copy image data from the framebuffer.  The | 
 |     semantics and accepted values of the <target>, <level>, <xoffset>, and | 
 |     <yoffset> parameters are exactly equivalent to their TexSubImage1DEXT | 
 |     and TexSubImage2DEXT counterparts.  The semantics and accepted values | 
 |     of the <x>, <y>, <width>, and <height> parameters are exactly equivalent | 
 |     to their CopyTexImage1DEXT and CopyTexImage2DEXT counterparts. | 
 |  | 
 |     If EXT_subtexture and EXT_texture3D are both supported, this extension | 
 |     also defines CopyTexSubImage3DEXT.  Because framebuffer memory is two- | 
 |     dimensional, only a portion of a single s,t slice of a 3D texture is | 
 |     replaced by this command.  Thus CopyTexSubImage3DEXT is related to | 
 |     TexSubImage3DEXT in exactly the way that CopyPixels is related to | 
 |     DrawPixels, except that it is as though TexSubImage3DEXT parameter | 
 |     <depth> were 1.  Rather than accepting image data from memory, | 
 |     CopyTexSubImage3DEXT copies image data from the framebuffer.  The | 
 |     semantics and accepted values of the <target>, <level>, <xoffset>, | 
 |     <yoffset>, and <zoffset> parameters are exactly equivalent to their | 
 |     TexSubImage3DEXT counterparts.  The semantics and accepted values of | 
 |     the <x>, <y>, <width>, and <height> parameters are exactly equivalent | 
 |     to their CopyTexImage2DEXT counterparts. | 
 |  | 
 | Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations | 
 | and the Framebuffer) | 
 |  | 
 |     None | 
 |  | 
 | Additions to Chapter 5 of the 1.0 Specification (Special Functions) | 
 |  | 
 |     None | 
 |  | 
 | Additions to Chapter 6 of the 1.0 Specification (State and State Requests) | 
 |  | 
 |     None | 
 |  | 
 | Additions to the GLX Specification | 
 |  | 
 |     None | 
 |  | 
 | GLX Protocol | 
 |  | 
 |     Five new GL rendering commands are added. The following commands are sent to the | 
 |     server as part of a glXRender request: | 
 |  | 
 |         CopyTexImage1DEXT | 
 |             2           32              rendering command length | 
 |             2           4119            rendering command opcode | 
 |             4           ENUM            target | 
 |             4           INT32           level | 
 |             4           ENUM            internalformat | 
 |             4           INT32           x        | 
 |             4           INT32           y        | 
 |             4           INT32           width | 
 |             4           INT32           border | 
 |  | 
 |         CopyTexImage2DEXT | 
 |             2           36              rendering command length | 
 |             2           4120            rendering command opcode | 
 |             4           ENUM            target | 
 |             4           INT32           level | 
 |             4           ENUM            internalformat | 
 |             4           INT32           x        | 
 |             4           INT32           y        | 
 |             4           INT32           width | 
 |             4           INT32           height | 
 |             4           INT32           border | 
 |  | 
 |         CopyTexSubImage1DEXT | 
 |             2           28              rendering command length | 
 |             2           4121            rendering command opcode | 
 |             4           ENUM            target | 
 |             4           INT32           level | 
 |             4           INT32           xoffset | 
 |             4           INT32           x        | 
 |             4           INT32           y        | 
 |             4           INT32           width | 
 |  | 
 |         CopyTexSubImage2DEXT | 
 |             2           36              rendering command length | 
 |             2           4122            rendering command opcode | 
 |             4           ENUM            target | 
 |             4           INT32           level | 
 |             4           INT32           xoffset | 
 |             4           INT32           yoffset | 
 |             4           INT32           x        | 
 |             4           INT32           y        | 
 |             4           INT32           width | 
 |             4           INT32           height | 
 |  | 
 |         CopyTexSubImage3DEXT | 
 |             2           40              rendering command length | 
 |             2           4123            rendering command opcode | 
 |             4           ENUM            target | 
 |             4           INT32           level | 
 |             4           INT32           xoffset | 
 |             4           INT32           yoffset | 
 |             4           INT32           zoffset | 
 |             4           INT32           x        | 
 |             4           INT32           y        | 
 |             4           INT32           width | 
 |             4           INT32           height | 
 |  | 
 | Dependencies on EXT_texture | 
 |  | 
 |     EXT_texture is required.  This extension builds on the notion of | 
 |     internal image format, which is defined by EXT_texture. | 
 |  | 
 | Dependencies on EXT_texture3D | 
 |  | 
 |     If EXT_texture3D is not supported, CopyTexSubImage3DEXT is not defined | 
 |     by this extension. | 
 |  | 
 | Dependencies on SGIS_texture_filter4 | 
 |  | 
 |     If SGIS_texture_filter4 is not supported, 2 is not accepted as a border | 
 |     value. | 
 |  | 
 | Dependencies on EXT_subtexture | 
 |  | 
 |     If EXT_subtexture is not supported, CopyTexSubImage1DEXT, | 
 |     CopyTexSubImage2DEXT, and CopyTexSubImage3DEXT are not defined by this | 
 |     extension. | 
 |  | 
 | Errors | 
 |  | 
 |     INVALID_ENUM is generated if CopyTexImage1DEXT or CopyTexSubImage1DEXT | 
 |     parameter <target> is not TEXTURE_1D.  (The commands defined by this | 
 |     extension do not accept PROXY targets.) | 
 |  | 
 |     INVALID_ENUM is generated if CopyTexImage2DEXT or CopyTexSubImage2DEXT | 
 |     parameter <target> is not TEXTURE_2D. | 
 |  | 
 |     INVALID_ENUM is generated if CopyTexSubImage3DEXT parameter <target> | 
 |     is not TEXTURE_3D_EXT. | 
 |  | 
 |     INVALID_VALUE is generated if CopyTexImage1DEXT or CopyTexImage2DEXT | 
 |     parameter <level> is less than zero, or greater than the maximum value | 
 |     supported by the implementation. | 
 |  | 
 |     INVALID_ENUM is generated if CopyTexImage1DEXT or CopyTexImage2DEXT | 
 |     parameter <internalformat> is not ALPHA, RGB, RGBA, LUMINANCE, | 
 |     LUMINANCE_ALPHA, or one of the token values defined by EXT_texture. | 
 |  | 
 |     INVALID_VALUE is generated when any of the <width> or <height> | 
 |     parameters of CopyTexImage1DEXT or CopyTexImage2DEXT is less than zero, | 
 |     or if it cannot be represented as 2**k + 2*border for some integer k. | 
 |  | 
 |     INVALID_VALUE is generated if CopyTexSubImage1DEXT, CopyTexSubImage2DEXT, | 
 |     or CopyTexSubImage3DEXT parameter <xoffset>, CopyTexSubImage2DEXT or | 
 |     CopyTexSubImage3DEXT parameter <yoffset>, or CopyTexSubImage3DEXT | 
 |     parameter <zoffset> is less than -TEXTURE_BORDER, where TEXTURE_BORDER | 
 |     is the border width of the texture array to be modified. | 
 |  | 
 |     INVALID_VALUE is generated if CopyTexSubImage1DEXT, CopyTexSubImage2DEXT, | 
 |     or CopyTexSubImage3DEXT (xoffset + width) > (TEXTURE_WIDTH - | 
 |     TEXTURE_BORDER), or if CopyTexSubImage2DEXT or CopyTexSubImage3DEXT | 
 |     (yoffset + height) > (TEXTURE_HEIGHT - TEXTURE_BORDER), or if | 
 |     CopyTexSubImage3DEXT zoffset >= (TEXTURE_DEPTH_EXT - TEXTURE_BORDER). | 
 |     Note that TEXTURE_WIDTH, TEXTURE_HEIGHT, and TEXTURE_DEPTH_EXT include | 
 |     twice the border width. | 
 |  | 
 |     TEXTURE_TOO_LARGE_EXT is generated by CopyTexImage1DEXT or | 
 |     CopyTexImage2DEXT if the specified image is too large, for any reason. | 
 |     (See EXT_texture for a discussion of how applications can query the | 
 |     maximum texture size.) | 
 |  | 
 |     INVALID_VALUE is generated if CopyTexImage1DEXT or CopyTexImage2DEXT | 
 |     parameter <border> is not 0, 1, or 2. | 
 |  | 
 |     INVALID_OPERATION is generated if CopyTexImage1DEXT, CopyTexImage2DEXT, | 
 |     CopyTexSubImage1DEXT, CopyTexSubImage2DEXT, or CopyTexSubImage3DEXT is | 
 |     called between execution of Begin and the corresponding execution of | 
 |     End. | 
 |  | 
 | New State | 
 |  | 
 |     None | 
 |  | 
 | New Implementation Dependent State | 
 |  | 
 |     None |