Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OpenGL 1.x中检测GLSL与GLSL ES支持_Opengl_Glsl_Glsles - Fatal编程技术网

在OpenGL 1.x中检测GLSL与GLSL ES支持

在OpenGL 1.x中检测GLSL与GLSL ES支持,opengl,glsl,glsles,Opengl,Glsl,Glsles,我写的是在Core2.0之前的OpenGL版本中使用GLSL和着色器对象。我的源代码检测到OpenGL版本低于2.0,然后检查是否支持GL_ARB_shading_language_100。如果受支持,则假定支持GL_ARB_shader_对象、GL_ARB_顶点_shader和GL_ARB_fragment_shader 我注意到,我认为这意味着支持GLSL 1的假设是错误的,因为支持GLSL ES 1.2,并且我所有的着色器源代码都无法编译(缺少3D纹理支持)。glGetString(GL_

我写的是在Core2.0之前的OpenGL版本中使用GLSL和着色器对象。我的源代码检测到OpenGL版本低于2.0,然后检查是否支持GL_ARB_shading_language_100。如果受支持,则假定支持GL_ARB_shader_对象、GL_ARB_顶点_shader和GL_ARB_fragment_shader

我注意到,我认为这意味着支持GLSL 1的假设是错误的,因为支持GLSL ES 1.2,并且我所有的着色器源代码都无法编译(缺少3D纹理支持)。glGetString(GL_SHADING_LANGUAGE_VERSION_ARB)没有帮助(返回1.20),并且没有文档证明它有帮助


有没有办法通过扩展来检测GLSL ES是否受支持?

自动工具系统(
autoconf
automake
)很久以前就解决了这个问题。他们不进行版本检测,而是尝试编译一些小片段来实现所讨论的功能。GLSL编译失败是可以检测到的,所以我认为您可以使用相同的方法。我对版本号感到困惑。没有
GLSL ES 1.2
,只有
1.0
3.0
3.1
(分别适用于OpenGL ES版本
2.0
3.0
,和
3.1
)。您如何知道支持
GLSL ES 1.2