2012-08-15 162 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