glGetShaderPrecisionFormat — return the range and precision for different shader numeric formats
void glGetShaderPrecisionFormat( | GLenum shaderType, |
GLenum precisionType, | |
GLint *range, | |
GLint *precision) ; |
shaderType
Specifies the type of shader to query. Must be either GL_VERTEX_SHADER
or GL_FRAGMENT_SHADER
.
precisionType
Specifies the numeric format to query, corresponding to a shader precision qualifier and variable type. Must be one of GL_LOW_FLOAT
, GL_MEDIUM_FLOAT
, GL_HIGH_FLOAT
, GL_LOW_INT
, GL_MEDIUM_INT
, or GL_HIGH_INT
.
range
Specifies a pointer to the two-element array in which the of the minimum and maximum representable magnitudes of the format are returned.
precision
Specifies a pointer to the location in which the of the precision of the format is returned.
glGetShaderPrecisionFormat
returns range and precision limits for floating-point and integer shader variable formats with low, medium, and high precision qualifiers. When and are the minimum and maximum representable values of the format, and are returned in range
as the first and second elements, respectively.
If the smallest representable value greater than 1 is then is returned in precision
. An integer format will have an ∊ of 1, and thus will return 0. Floating-point formats will return values greater than 0.
The minimum range and precision required for different formats is described in the OpenGL ES Shading Language Specification.
If a high precision floating-point format is not supported for fragment shaders, calling glGetShaderPrecisionFormat
with arguments GL_FRAGMENT_SHADER
and GL_HIGH_FLOAT
will return 0 for both range
and precision
. Support for a high precision floating-point format is mandatory for vertex shaders.
Shader compiler support is optional, and thus must be queried before use by calling glGet with argument GL_SHADER_COMPILER
. glShaderSource, glCompileShader, glGetShaderPrecisionFormat
, and glReleaseShaderCompiler will each generate GL_INVALID_OPERATION
on implementations that do not support a shader compiler. Such implementations instead offer the glShaderBinary alternative for supplying a pre-compiled shader binary.
If an error is generated, no change is made to the contents of range
or precision
.
GL_INVALID_OPERATION
is generated if a shader compiler is not supported.
GL_INVALID_ENUM
is generated if shaderType
or precisionType
is not an accepted value.
Copyright © 2008 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. https://opencontent.org/openpub/.