在OpenGL 1.x中检测GLSL与GLSL ES支持
我写的是在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),并且没有文档证明它有帮助在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_
有没有办法通过扩展来检测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
?