angle/extensions/ANGLE_get_tex_level_paramet...

175 строки
7.5 KiB
Plaintext

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 <pname> 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 <pname> for level-of-detail
<level> of the specified target into <params>. <pname> must be one of the
symbolic values in table 6.11.
<target> 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.
<level> determines which level-of-detail's state is returned. If <level>
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 <target> parameter for
GetTexLevelParameter{if}vANGLE, because it does not specify a particular
cube map face.
For texture images with uncompressed internal formats, queries of
<pname> 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 <pname> 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 <pname> 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 <pname> 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 <target> 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 <level> is negative or larger than the maximum allowable level-of-detail.
The error INVALID_ENUM is generated by GetTexLevelParameter{if}vANGLE
if <value> 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.