Name ANGLE_get_tex_level_parameter Name Strings GL_ANGLE_get_tex_level_parameter Contributors Geoff Lang, Google Contact Geoff Lang (geofflang 'at' google.com) Status Incomplete Version Last Modified Date: Oct 12, 2020 Author Revision: 1 Number OpenGL ES Extension XX Dependencies OpenGL ES 2.0 is required. This extension is written against the OpenGL ES 3.0.5 specification. Overview This extension allows the user to query information about specific texture levels exposed later in OpenGL ES 3.1. IP Status No known IP claims. New Procedures and Functions void GetTexLevelParameter{if}vANGLE(enum target, int level, enum pname, T *params ); New Tokens Accepted by the parameter of GetTexLevelParameter{if}vANGLE: TEXTURE_WIDTH 0x1000 TEXTURE_HEIGHT 0x1001 TEXTURE_DEPTH 0x8071 TEXTURE_INTERNAL_FORMAT 0x1003 TEXTURE_RED_SIZE 0x805C TEXTURE_GREEN_SIZE 0x805D TEXTURE_BLUE_SIZE 0x805E TEXTURE_ALPHA_SIZE 0x805F TEXTURE_DEPTH_SIZE 0x884A TEXTURE_STENCIL_SIZE 0x88F1 TEXTURE_SHARED_SIZE 0x8C3F TEXTURE_RED_TYPE 0x8C10 TEXTURE_GREEN_TYPE 0x8C11 TEXTURE_BLUE_TYPE 0x8C12 TEXTURE_ALPHA_TYPE 0x8C13 TEXTURE_DEPTH_TYPE 0x8C16 TEXTURE_COMPRESSED 0x86A1 Additions to Chapter 6 of the OpenGL ES 3.0.5 Specification (State and State Requests) Modify Section 6.1.4 "Texture Queries": (Add the following text to the end of the section) The commands void GetTexLevelParameter{if}vANGLE(enum target, int level, enum pname, T *params ); place information about texture image parameter for level-of-detail of the specified target into . must be one of the symbolic values in table 6.11. may be one of TEXTURE_2D or one of the cube map face targets from table 3.18, indicating the two-dimensional texture or one of the six distinct 2D images making up the cube map texture object. Otherwise an INVALID_ENUM is generated. determines which level-of-detail's state is returned. If is negative or larger than the maximum allowable level-of-detail, then an INVALID_VALUE error is generated. Note that TEXTURE_CUBE_MAP is not a valid parameter for GetTexLevelParameter{if}vANGLE, because it does not specify a particular cube map face. For texture images with uncompressed internal formats, queries of TEXTURE_RED_TYPE, TEXTURE_GREEN_TYPE, TEXTURE_BLUE_TYPE, TEXTURE_ALPHA_TYPE, and TEXTURE_DEPTH_TYPE return the data type used to store the component. Types NONE, SIGNED_NORMALIZED, UNSIGNED_- NORMALIZED, FLOAT, INT, and UNSIGNED_INT respectively indicate missing, signed normalized fixed-point, unsigned normalized fixed-point, floating-point, signed unnormalized integer, and unsigned unnormalized integer components. Queries of TEXTURE_RED_SIZE, TEXTURE_GREEN_SIZE, TEXTURE_BLUE_SIZE, TEXTURE_ALPHA_SIZE, TEXTURE_DEPTH_SIZE, TEXTURE_STENCIL_SIZE, and TEXTURE_SHARED_SIZE return the actual resolutions of the stored image components, not the resolutions specified when the image was defined. Invalid generate an INVALID_ENUM error. For texture images with compressed internal formats, the types returned specify how components are interpreted after decompression, while the resolutions returned specify the component resolution of an uncompressed internal format that produces an image of roughly the same quality as the compressed image in question. Since the quality of the implementation's compression algorithm is likely data-dependent, the returned component sizes should be treated only as rough approximations. Queries of TEXTURE_INTERNAL_FORMAT, TEXTURE_WIDTH, TEXTURE_HEIGHT, and TEXTURE_DEPTH return the internal format, width, height, and depth, respectively, as specified when the image array was created. Errors The error INVALID_ENUM is generated by GetTexLevelParameter{if}vANGLE if is not one of TEXTURE_2D, TEXTURE_3D, TEXTURE_2D_ARRAY, one of the cube map face targets from table 3.18, or TEXTURE_2D_MULTISAMPLE_ANGLE. The error INVALID_VALUE is generated by GetTexLevelParameter{if}vANGLE if is negative or larger than the maximum allowable level-of-detail. The error INVALID_ENUM is generated by GetTexLevelParameter{if}vANGLE if is not one of TEXTURE_RED_TYPE, TEXTURE_GREEN_TYPE, TEXTURE_BLUE_TYPE, TEXTURE_ALPHA_TYPE, TEXTURE_DEPTH_TYPE, TEXTURE_DEPTH_SIZE, TEXTURE_STENCIL_SIZE, TEXTURE_SHARED_SIZE, TEXTURE_WIDTH, TEXTURE_HEIGHT, TEXTURE_DEPTH, TEXTURE_INTERNAL_FORMAT, TEXTURE_RED_SIZE, TEXTURE_GREEN_SIZE, TEXTURE_BLUE_SIZE, TEXTURE_ALPHA_SIZE, or TEXTURE_COMPRESSED. New State (add new table 6.10, Textures (state per texture image), renumber subsequent tables) Initial Get Value Type Get Command Value Description Sec. ---------------------- ---- ------------------- ------ --------------------------- ------ TEXTURE_WIDTH Z+ GetTexLevelParameterANGLE 0 Specified width 3.8 TEXTURE_HEIGHT Z+ GetTexLevelParameterANGLE 0 Specified height (2D/3D) 3.8 TEXTURE_DEPTH Z+ GetTexLevelParameterANGLE 0 Specified depth (3D) 3.8 TEXTURE_INTERNAL_FORMAT E GetTexLevelParameterANGLE RGBA Internal format 3.8 or R8 (see section 3.8.14) TEXTURE_x_SIZE 6xZ+ GetTexLevelParameterANGLE 0 Component resolution (x is 3.8 RED, GREEN, BLUE, ALPHA, DEPTH, or STENCIL) TEXTURE_SHARED_SIZE Z+ GetTexLevelParameterANGLE 0 Shared exponent field 3.8 resolution TEXTURE_x_TYPE E GetTexLevelParameterANGLE NONE Component type (x is RED, 6.1.4 GREEN, BLUE, ALPHA, or DEPTH) TEXTURE_COMPRESSED B GetTexLevelParameterANGLE FALSE True if image has a 3.8.6 compressed internal format Issues None Revision History Rev. Date Author Changes ---- -------- ---------- -------------------------------------------- 1 14/10/20 Geoff Lang First revision. Adapted from OpenGL ES specification 3.1.