查找支持的GLSL版本

Dol*_*000 9 opengl glsl

如何才能以可编程方式可靠地使用的方式找到OpenGL实现支持的GLSL版本?

获取GL_SHADING_LANGUAGE_VERSION字符串并尝试解析它的最佳方法是什么?可以依赖于以明确定义的格式返回吗?我的英特尔驱动程序返回的1.20内容很简单,可以解析,但我的nVidia卡会返回4.20 NVIDIA via Cg compiler.它是否可以被(\d+)\.(\d+)( .*)?正则表达式匹配?这个答案似乎表明不然,回归OpenGL ES GLSL ES 1.0.

这是否正确,和/或是否有其他方式?具体来说,我想检查一下,至少支持GLSL 1.20.

dat*_*olf 16

OpenGL版本和支持的GLSL版本之间存在特定的映射:

GLSL Version      OpenGL Version
1.10              2.0
1.20              2.1
1.30              3.0
1.40              3.1
1.50              3.2
3.30              3.3
4.00              4.0
4.10              4.1
4.20              4.2
4.30              4.3
4.40              4.4
4.50              4.5
Run Code Online (Sandbox Code Playgroud)

有一个定义良好的API用于查询OpenGL版本.使用上面的表格映射到GLSL版本(在OpenGL-3.3之后它非常合乎逻辑).

此外,规范定义了GL_VERSION和GL_SHADING_LANGUAGE_VERSION的格式

以版本号开头.版本号使用以下形式之一:

major_number.minor_number | major_number.minor_number.release_number
Run Code Online (Sandbox Code Playgroud)