2012-08-15 135 views
13

我使用10.8 Mountain Lion来关注OpenGL 3.3的arcsynthesis教程,并且在构建项目时,它使用GLSL 3.30编译和运行着色器,但是即使在Mac OS 10.8的核心配置文件中,我也不应该支持GLSL 3.30 - 只有1.50(如突出了图片)Mac OS 10.8支持GLSL 3.30?

是任何人都无法解释我是如何成功地实现这个黑魔法?

+0

事实上,随着一些进一步的测试,它一直工作到GLSL 4.10。只有在尝试4.20时,它才能编译着色器... – LiarWithFire 2012-08-15 05:37:35

+0

也许着色器编译器无法正确识别较高着色器语言。您是否尝试过使用330特定的功能? – Oskar 2012-08-15 05:38:46

+1

据我所知,布局(位置= 0)仅包含在GLSL 3.3及更高版本中。 – LiarWithFire 2012-08-15 05:44:33

回答

7

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。我想他们想花费在他们的金属api上的资源,而不是前进,并获得计算着色器..

+1

它应该注意的是,如果'#extension GL_ARB_explicit_attrib_location:enable'实际上起作用,它就不符合规范,因为OpenGL不公布GL_ARB_explicit_attrib_location。要么,要么Apple [OpenGL扩展页面已过期](https://developer.apple.com/graphicsimaging/opengl/capabilities/) – 2012-12-01 22:42:37

+1

是的。我可以验证这个扩展在10.7和10.8中对ATI和Nvidia都有效。在将延迟着色器移植到GLSL 1.5/OS X时必须支持在片段着色器中指定位置,这是偶然发现的。 (呈现给多个FBO附件)已经学会了艰难的方式,这是多么重要,并且很激动,我不必以艰难的方式解决它。 – Grimmy 2012-12-03 03:56:15