4

我在 MacBook Pro 上使用 GLFW 3 和 OpenGL 4 + GLSL 4。启动程序时出现以下语法错误:

ERROR: 0:5: 'varying' : syntax error syntax error

着色器代码:

#version 410

varying vec3 vertex;

void main() {
}

为什么我不允许使用可变变量?

4

1 回答 1

5

为什么我不允许使用可变变量?

因为自 GLSL 1.30 以来它们已被更通用in/可变的概念所取代。out

这变得很有必要,因为在 GL3 中引入了几何着色器,因此需要在着色器阶段之间使用更通用的通信方法。现在,您只需在一个着色器阶段声明变量,并拥有与您正在使用的下一个着色器阶段out相同的声明。in变化的概念仍然相同 - 光栅化器之前的最后一个着色器阶段(您使用)的输出应该匹配片段着色器(或光栅化器之后的第一个着色器阶段,但目前没有其他)的输入,并且数据将在默认情况下跨基元进行插值(如果您不将其声明为flat,或使用无法插值的类型)。

于 2014-05-04T13:25:46.230 回答