我和我的合作伙伴正在进行一个OpenGL项目,其中包括一个skybox。skybox在他的电脑(它有GLSL版本4.5)和所有东西上工作得很好,但是skybox在我的电脑上工作(GLSL 4.0)。编译器抱怨这一行中有语法错误:
layout(binding=0) uniform samplerCube currTexture;我得到的印象是,这种语法不被GLSL的版本所支持,比4.2更早,对吗?如果是这样的话,我如何重写这一行与GLSL 4.0兼容?我一直在重复使用最新版本如何做到这一点,或者更长的代码片段,我不确定我是否完全理解/不知道它是否在做同样的事情。
发布于 2015-05-09 12:21:38
我得到的是,这种语法不支持GLSL版本之前的4.2,这是正确的吗?
是。layout(binding=...)是在GL_ARB_shading_language_420pack扩展中引入的,它是GL4.2之后的核心。
如果是这样的话,我如何重写这一行与GLSL 4.0兼容?
您只需省略layout(binding)限定符即可。它只是查询统一位置和通过客户端的glUniform1i()设置值的快捷方式。但是,制服被初始化为0,所以在您的情况下,这将像以前一样工作。
https://stackoverflow.com/questions/30137408
复制相似问题