GLSL中的语法错误'变化'

Flu*_*upp 4 opengl macos glsl glfw varying

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

ERROR: 0:5: 'varying' : syntax error syntax error
Run Code Online (Sandbox Code Playgroud)

着色器代码:

#version 410

varying vec3 vertex;

void main() {
}
Run Code Online (Sandbox Code Playgroud)

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

der*_*ass 5

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

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

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