| Name |
| |
| CHROMIUM_copy_texture |
| |
| Name Strings |
| |
| GL_CHROMIUM_copy_texture |
| |
| Version |
| |
| Last Modifed Date: March 24, 2017 |
| |
| 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 |
| |
| void CopyTextureCHROMIUM(uint sourceId, |
| int sourceLevel, |
| enum destTarget, |
| uint destId, |
| int destLevel, |
| int internalFormat, |
| enum destType, |
| boolean unpackFlipY, |
| boolean unpackPremultiplyAlpha, |
| boolean unpackUnmultiplyAlpha) |
| |
| |
| void CopySubTextureCHROMIUM(uint sourceId, |
| int sourceLevel, |
| enum destTarget, |
| uint destId, |
| int destLevel, |
| int xoffset, |
| int yoffset, |
| int x, |
| int y, |
| sizei width, |
| sizei height, |
| boolean unpackFlipY, |
| boolean unpackPremultiplyAlpha, |
| boolean unpackUnmultiplyAlpha) |
| |
| Additions to the OpenGL ES 2.0 Specification |
| |
| The command |
| |
| CopyTextureCHROMIUM |
| |
| Copies the contents of <sourceLevel> level of <sourceId> texture to |
| <destLevel> level and <destTarget> target of <destId> texture. |
| |
| <destTarget> must be TEXTURE_2D, |
| TEXTURE_CUBE_MAP_POSITIVE_X, TEXTURE_CUBE_MAP_NEGATIVE_X, |
| TEXTURE_CUBE_MAP_POSITIVE_Y, TEXTURE_CUBE_MAP_NEGATIVE_Y, |
| TEXTURE_CUBE_MAP_POSITIVE_Z, TEXTURE_CUBE_MAP_NEGATIVE_Z, |
| TEXTURE_RECTANGLE_ARB. |
| |
| The internal format of the destination texture is converted to that |
| specified by <internalFormat>. |
| |
| When source texture doens't contain a superset of the component |
| required by <internalFormat>, fill the components by following rules. |
| |
| source format color components |
| ---------------------------------------- |
| ALPHA (0, 0, 0, A) |
| RED (R, 0, 0, 1) |
| LUMINANCE (L, L, L, 1) |
| LUMINANCE_ALPHA (L, L, L, A) |
| RGB (R, G, B, 1) |
| RGB8 (R, G, B, 1) |
| RGBA (R, G, B, A) |
| RGBA8 (R, G, B, A) |
| BGRA_EXT (R, G, B, A) |
| BGRA8_EXT (R, G, B, A) |
| RGB_YCBCR_420V_CHROMIUM (R, G, B, 1) |
| RGB_YCBCR_422_CHROMIUM (R, G, B, 1) |
| |
| The format type of the destination texture is converted to that specified |
| by <destType>. |
| |
| If <flipY> is true, vertically flip texture image data. |
| |
| If <unpackPremultiplyAlpha> and <unpackUnmultiplyAlpha> are true, |
| no alpha processing occurs. This is the equivalent of having neither flag |
| set. |
| |
| When <sourceId> refers to a stream texture, the texture matrix will be |
| applied as part of the copy operation. |
| |
| INVALID_OPERATION is generated if <internalFormat> is not one of the |
| formats in Table 1.0. |
| |
| INVALID_OPERATION is generated if the internal format of <sourceId> is not |
| one of formats in Table 1.1. |
| |
| INVALID_VALUE is generated if <sourceId> or <destId> are not valid texture |
| objects. |
| |
| INVALID_ENUM is generated if <destTarget> 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 <destId> have not |
| been bound as TEXTURE_2D, TEXTURE_CUBE_MAP, or |
| TEXTURE_RECTANGLE_ARB objects. |
| |
| INVALID_VALUE is generated if textures corresponding to <sourceId> have not |
| been bound as TEXTURE_2D, TEXTURE_RECTANGLE_ARB or |
| TEXTURE_EXTERNAL_OES objects. |
| |
| INVALID_VALUE is generated if <sourceLevel> is not 0 for ES 2.0, or if |
| <sourceLevel> or <destLevel> is less than 0 for ES 3.0. |
| |
| INVALID_VALUE is generated if <sourceLevel> of the source texture is not |
| defined. |
| |
| The command |
| |
| CopySubTextureCHROMIUM |
| |
| Copies the sub contents of texture referred to by <sourceId> to <destId> |
| texture without redefining <destId> texture. |
| |
| See CopyTextureCHROMIUM for the interpretation of the <destTarget>, |
| <sourceLevel>, <destLevel>, <flipY>, <premultiplyAlpha>, and |
| <unmultiplyAlpha> 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 <sourceId> texture or <destId> |
| texture is not defined. |
| |
| INVALID_OPERATION is generated if the internal format of <sourceId> or |
| <destId> is not one of formats in Table 1.1. |
| |
| INVALID_OPERATION is generated if the destination texture array has not |
| been defined. |
| |
| INVALID_VALUE is generated if <destId> texture is not bound as |
| TEXTURE_2D or 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> + <width>) > destWidth, |
| or (<yoffset> + <height>) > destHeight. |
| |
| Table 1.0 Valid internal formats for CopyTextureCHROMIUM: |
| |
| <internalFormat> |
| --------------- |
| RGB |
| RGBA |
| RGB8 |
| RGBA8 |
| BGRA_EXT |
| BGRA8_EXT |
| SRGB_EXT |
| SRGB_ALPHA_EXT |
| R8 |
| R8UI |
| RG8 |
| RG8UI |
| SRGB8 |
| RGB565 |
| RGB8UI |
| SRGB8_ALPHA8 |
| RGB5_A1 |
| RGBA4 |
| RGBA8UI |
| RGB9_E5 |
| R16F |
| R32F |
| RG16F |
| RG32F |
| RGB16F |
| RGB32F |
| RGBA16F |
| RGBA32F |
| R11F_G11F_B10F |
| |
| Table 1.1 Valid source texture internal formats for CopyTextureCHROMIUM and |
| source and destination formats for CopySubTextureCHROMIUM: |
| |
| internal format |
| --------------- |
| RED |
| ALPHA |
| LUMINANCE |
| LUMINANCE_ALPHA |
| RGB |
| RGBA |
| RGB8 |
| RGBA8 |
| BGRA_EXT |
| BGRA8_EXT |
| RGB_YCBCR_420V_CHROMIUM |
| RGB_YCBCR_422_CHROMIUM |
| |
| 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 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 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 TEXTURE_CUBE_MAP as valid dest_id target. |
| 24/3/2017 Clean up naming and move formats into tables. |