GLSL 400 samplerCube 绑定

GLSL 400 samplerCube binding

我和我的搭档正在开发一个包含天空盒的 OpenGL 项目。天空盒在他的计算机(具有 GLSL 4.5 版)上运行良好,但天空盒在我的计算机上运行良好(GLSL 4.0)。编译器抱怨此行中的语法错误:

layout(binding=0) uniform samplerCube currTexture;

我的印象是 4.2 之前的 GLSL 版本不支持此语法,这是正确的吗?如果是这样,我如何重写此行以与 GLSL 4.0 兼容?我一直看到重复如何使用最新版本执行此操作,或者看到更长的代码片段,我不确定我是否完全理解/不知道它是否在做同样的事情。

I've gotten is that this syntax is not supported by versions of GLSL earlier than 4.2, is this correct?

是的。 layout(binding=...)GL_ARB_shading_language_420pack 扩展中被引入并且是 GL 4.2 以来的核心。

If so, how do I rewrite this line to be compatible with GLSL 4.0?

您只需省略 layout(binding) 限定符。这只是必须在客户端通过 glUniform1i() 查询统一位置并设置值的快捷方式。然而,无论如何,制服都被初始化为 0,所以在你的情况下,这将像以前一样工作。