名称
glGetShaderPrecisionFormat - 返回不同着色器数字格式的范围和精度
C规范
void glGetShaderPrecisionFormat( GLenum shaderType,
GLenum precisionType,
GLint *range,
GLint *precision);
参数
shaderType
指定要查询的着色器的类型。必须是GL_VERTEX_SHADER或GL_FRAGMENT_SHADER。
precisionType
指定要查询的数字格式,对应于着色器精度限定符和变量类型。必须是GL_LOW_FLOAT,GL_MEDIUM_FLOAT,GL_HIGH_FLOAT,GL_LOW_INT,GL_MEDIUM_INT或GL_HIGH_INT中的一个。
range
指定指向两元素数组的指针,其中返回log以2为底格式的最小和最大为对数的值。
precision
指定指向返回格式精度的log 2的位置的指针。
描述
glGetShaderPrecisionFormat返回具有低,中和高精度限定符的浮点和整数着色器变量格式的范围和精度限制。当minRep和maxRep是格式的最小和最大可表示值时,floor = log2minRep和floor=log2maxRep分别作为第一个和第二个元素返回range。
如果大于1的最小可表示值是1 +ε,则以精度返回floor - log2ε。整数格式的ε为1,因此将返回0.浮点格式将返回大于0的值。
注意
OpenGL ES着色语言规范中描述了不同格式所需的最小范围和精度。
如果片段着色器不支持高精度浮点格式,则使用参数GL_FRAGMENT_SHADER和GL_HIGH_FLOAT调用glGetShaderPrecisionFormat将为range和precision返回0。对于顶点着色器,必须支持高精度浮点格式。
着色器编译器支持是可选的,因此必须在使用之前通过使用参数GL_SHADER_COMPILER调用glGet来查询。 glShaderSource,glCompileShader,glGetShaderPrecisionFormat和glReleaseShaderCompiler将在不支持着色器编译器的实现上生成GL_INVALID_OPERATION。这样的实现提供了glShaderBinary替代方案,用于提供预编译的着色器二进制文件。
如果生成错误,则不会更改range或precision的内容。
错误
GL_INVALID_OPERATION:不支持着色器编译器。
GL_INVALID_ENUM:shaderType或precisionType不是可接受的值。
相关Gets
glGet 参数GL_SHADER_COMPILER
另见
glCompileShader,glShaderSource
版权
https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glGetShaderPrecisionFormat.xml
https://blog.csdn.net/flycatdeng
Copyright © 1991-2006 Silicon Graphics, Inc.本文档的许可是根据SGI Free Software B License.详见http://oss.sgi.com/projects/FreeB/.