我正在跟随arcsynthesis的OpenGL 3.3教程,使用10.8 Mountain Lion。在构建项目时,它使用GLSL版本3.30编译和运行着色器。然而,在Mac OS 10.8的核心配置下,我不应该拥有GLSL 3.30支持,只有1.50(如图片中所示)。
有人能解释一下我是如何实现这种黑魔法的吗?
我正在跟随arcsynthesis的OpenGL 3.3教程,使用10.8 Mountain Lion。在构建项目时,它使用GLSL版本3.30编译和运行着色器。然而,在Mac OS 10.8的核心配置下,我不应该拥有GLSL 3.30支持,只有1.50(如图片中所示)。
有人能解释一下我是如何实现这种黑魔法的吗?
OS X 10.8仍然只支持OpenGL 3.2,但是可以使用一些3.3的特性,如指定属性位置(#extension GL_ARB_explicit_attrib_location : enable)
。着色器编译器接受高达4.10版本。他们可能为了兼容性而将其保留,或者(猜测)最初打算支持4.1版本。
这至少是我在10.8上使用几周后得出的结论。
编辑:看起来4.10版本的猜测是正确的。10.9-10.12支持高达4.10版本。我想他们想花费资源在Metal api上,而不是继续前进并实现计算着色器。
#extension GL_ARB_explicit_attrib_location : enable
实际起作用了,那么它是不符合规范的,因为OpenGL没有宣传GL_ARB_explicit_attrib_location。要么如此,要么是苹果的OpenGL扩展页面已经过时了。 - Nicol Bolas
glQueryCounter
(有一 个错误防止glVertexAttribDivisor
正常工作,这将在SDK的下一个版本中修复)。 - Nicol Bolas