| Name |
| |
| CHROMIUM_copy_texture |
| |
| Name Strings |
| |
| GL_CHROMIUM_copy_texture |
| |
| Version |
| |
| Last Modifed Date: July 16, 2014 |
| |
| Dependencies |
| |
| OpenGL ES 2.0 or OpenGL ES 3.0 is required. |
| |
| EXT_texture_format_BGRA8888 affects the definition of this extension. |
| ARB_texture_rg affects the definition of this extension. |
| CHROMIUM_ycbcr_422_image affects the definition of this extension. |
| |
| Overview |
| |
| This extension expands on the functionality provided by the |
| glCopyTexImage2D command. A new function is exported, |
| glCopyTextureCHROMIUM, that performs the same copy operation as |
| glCopyTexImage2D. |
| |
| The extension also supports copying BGRA textures and copying |
| EXTERNAL_OES texture to BGRA texture, which is not explicitly |
| granted by EXT_texture_format_BGRA8888. |
| |
| New Procedures and Functions |
| |
| The command |
| |
| void glCopyTextureCHROMIUM (GLenum source_id, |
| GLint source_level, |
| GLenum dest_target, |
| GLenum dest_id, |
| GLint dest_level, |
| GLint internal_format, GLenum dest_type, |
| GLboolean unpack_flip_y, |
| GLboolean unpack_premultiply_alpha, |
| GLboolean unpack_unmultiply_alpha) |
| |
| Copies the contents of <source_id> texture to <dest_id> texture. |
| |
| <source_level> specifies the level of the source texture which is copied |
| from. |
| <dest_level> specifies the level of the destination texture which is copied |
| to. |
| |
| <dest_target> specifies the target of destination texture. Must be |
| 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_TEXTURE_RECTANGLE_ARB. |
| |
| The internal format of the destination texture is converted to that |
| specified by <internal_format>. Must be one of the following symbolic |
| constants: GL_RGB, GL_RGBA, GL_RGB8, GL_RGBA8, GL_BGRA_EXT, GL_BGRA8_EXT, |
| GL_SRGB_EXT, GL_SRGB_ALPHA_EXT, GL_R8, GL_R8UI, GL_RG8, GL_RG8UI, GL_SRGB8, |
| GL_RGB565, GL_RGB8UI, GL_SRGB8_ALPHA8, GL_RGB5_A1, GL_RGBA4, GL_RGBA4, |
| GL_RGBA8UI, GL_RGB9_E5, GL_R16F, GL_R32F, GL_RG16F, GL_RG32F, GL_RGB16F, |
| GL_RGB32F, GL_RGBA16F, GL_RGBA32F, GL_R11F_G11F_B10F. |
| The internal format of source texture must be one of the following |
| symbolic constants: GL_RED, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, |
| GL_RGB, GL_RGBA, GL_RGB8, GL_RGBA8, GL_BGRA_EXT, GL_BGRA8_EXT, |
| GL_RGB_YCBCR_420V_CHROMIUM, GL_RGB_YCBCR_422_CHROMIUM. |
| When source texture doens't contain a superset of the component |
| required by <internal_format>, fill the components by following rules. |
| |
| source format color components |
| ===================================================== |
| GL_ALPHA (0, 0, 0, A) |
| GL_RED (R, 0, 0, 1) |
| GL_LUMINANCE (L, L, L, 1) |
| GL_LUMINANCE_ALPHA (L, L, L, A) |
| GL_RGB (R, G, B, 1) |
| GL_RGB8 (R, G, B, 1) |
| GL_RGBA (R, G, B, A) |
| GL_RGBA8 (R, G, B, A) |
| GL_BGRA_EXT (R, G, B, A) |
| GL_BGRA8_EXT (R, G, B, A) |
| GL_RGB_YCBCR_420V_CHROMIUM (R, G, B, 1) |
| GL_RGB_YCBCR_422_CHROMIUM (R, G, B, 1) |
| |
| The format type of the destination texture is converted to that specified |
| by <dest_type>. |
| |
| If <flip_y> is true, vertically flip texture image data. |
| |
| If <unpack_premultiply_alpha> and <unpack_unmultiply_alpha> are true, |
| no alpha processing occurs. This is the equivalent of having neither flag |
| set. |
| |
| When <source_id> refers to a stream texture, the texture matrix will be |
| applied as part of the copy operation. |
| |
| INVALID_OPERATION is generated if <internal_format> is not one of the valid |
| formats described above. |
| |
| INVALID_OPERATION is generated if the internal format of <source_id> is not |
| one of formats from the table above. |
| |
| INVALID_VALUE is generated if <source_id> or <dest_id> are not valid texture |
| objects. |
| |
| INVALID_ENUM is generated if <dest_target> is not one of the valid targets |
| described above. |
| |
| INVALID_OPERATION is generated if the bound target of destination texture |
| does not match <target>. |
| |
| INVALID_VALUE is generated if textures corresponding to <dest_id> have not |
| been bound as GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP, or |
| GL_TEXTURE_RECTANGLE_ARB objects. |
| |
| INVALID_VALUE is generated if textures corresponding to <source_id> have not |
| been bound as GL_TEXTURE_2D, GL_TEXTURE_RECTANGLE_ARB or |
| GL_TEXTURE_EXTERNAL_OES objects. |
| |
| INVALID_VALUE is generated if <source_level> is not 0 for ES 2.0, or if |
| <source_level> or <dest_level> is less than 0 for ES 3.0. |
| |
| INVALID_VALUE is generated if <source_level> of the source texture is not |
| defined. |
| |
| The command |
| |
| void glCopySubTextureCHROMIUM (GLenum source_id, |
| GLint source_level, |
| GLenum dest_target, |
| GLenum dest_id, |
| GLint dest_level, |
| GLint xoffset, GLint yoffset, |
| GLint x, GLint y, |
| GLsizei width, GLsizei height, |
| GLboolean unpack_flip_y, |
| GLboolean unpack_premultiply_alpha, |
| GLboolean unpack_unmultiply_alpha) |
| |
| Copies the sub contents of texture referred to by <source_id> to <dest_id> |
| texture without redefining <dest_id> texture. |
| |
| See CopyTextureCHROMIUM for the interpretation of the <dest_target>, |
| <source_level>, <dest_level>, <flip_y>, <premultiply_alpha>, and |
| <unmultiply_alpha> arguments. |
| |
| <xoffset> and <yoffset> specify a texel offset in the x and y direction |
| respectively within the destination texture. |
| |
| <x> and <y> specify specify a texel offset in the x and y direction |
| respectively within the source texture. |
| |
| <width> specifies the width of the texture subimage. |
| |
| <height> specifies the width of the texture subimage. |
| |
| INVALID_VALUE is generated if either <source_id> texture or <dest_id> |
| texture is not defined. |
| |
| INVALID_OPERATION is generated if source internal_format and destination |
| internal_format are not one of the valid formats described above. |
| |
| INVALID_OPERATION is generated if the destination texture array has not |
| been defined. |
| |
| INVALID_VALUE is generated if <dest_id> texture is not bound as |
| GL_TEXTURE_2D or GL_TEXTURE_RECTANGLE_ARB. |
| |
| INVALID_VALUE is generated if level 0 of the source texture or |
| the destination texture is not defined. |
| |
| INVALID_VALUE is generated if <xoffset> < 0 , or <yoffset> < 0. |
| |
| INVALID_VALUE is generated if (<xoffset> + <width>) > dest_width, |
| or (<yoffset> + <height>) > dest_height. |
| |
| Dependencies on ARB_texture_rg |
| |
| If ARB_texture_rg is not supported: |
| * delete any reference to the R8 format. |
| |
| Dependencies on CHROMIUM_ycbcr_422_image |
| |
| If CHROMIUM_ycbcr_422_image is not supported: |
| * delete any reference to the RGB_YCBCR_422_CHROMIUM format. |
| |
| Errors |
| |
| None. |
| |
| New Tokens |
| |
| None. |
| |
| New State |
| |
| None. |
| |
| Revision History |
| |
| 8/1/2011 Documented the extension |
| 7/4/2013 Add a new parameter dest_type to glCopyTextureCHROMIUM() |
| 16/7/2014 Add GL_TEXTURE_RECTANGLE_ARB as valid source_id target |
| 19/6/2015 Add arguments unpack_flip_y, unpack_premultiply_alpha, and |
| unpack_unmultiply_alpha to both commands. |
| 4/1/2016 Removed the argument target. |
| 4/1/2016 Added GL_TEXTURE_RECTANGLE_ARB as valid dest_id target. |
| 19/12/2016 Supported more ES 3.0 formats. |
| 18/1/2017 Supported source_level and dest_level. |
| 19/1/2017 Added GL_TEXTURE_CUBE_MAP as valid dest_id target. |