2015-05-09 89 views
0

我的合作伙伴和我正在開發一個包含天空盒的OpenGL項目。天空盒在他的電腦上(GLSL版本4.5)和一切都可以正常工作,但天空盒在我的電腦上工作(GLSL 4.0)。編譯器抱怨這行語法錯誤:GLSL 400 samplerCube binding

layout(binding=0) uniform samplerCube currTexture; 

和我已經得到的印象是,這個語法不是由GLSL的版本低於4.2的支持,這是正確的?如果是這樣,我該如何重寫這一行以兼容GLSL 4.0?我不斷地看到如何使用最新版本來做到這一點,或者不知道我是否完全理解/不知道它是否做了同樣的事情。

回答

1

我得知的是,這種語法不支持GLSL早於4.2的版本,這是正確的嗎?

是的。 layout(binding=...)GL_ARB_shading_language_420pack擴展中被入侵,並且是GL 4.2以後的核心。

如果是這樣,我該如何重寫此行以兼容GLSL 4.0?

您只需省略layout(binding)限定符。這只是通過客戶端上的glUniform1i()查詢統一位置並設置值的捷徑。然而,無論如何,制服初始化爲0,所以在你的情況下,這將會像以前一樣工作。

+0

非常感謝,現在完美! – Briana