在OpenGL ES 2.0中GLSL是否支持内置变量如gl_Normal gl_Vertex?

jar*_*lau 3 shader opengl-es glsl

我是OpenGL ES2.0和GLSL的新手,我想使用着色器来处理图像.当我在Xcode中编码时,我直接使用内置变量gl_Normal,gl_Vertex并且在着色器的开头没有声明它们.最后,我收到一条错误消息:

使用未声明的标识符gl_Normal.为什么?

dat*_*olf 5

使用未声明的标识符gl_Normal.为什么?

在OpenGL-ES 2中,跟随其脚步OpenGL-3核心,不再有预定义的着色器输入变量.OpenGL-4甚至完成了预定义的着色器输出.

相反,您需要定义自己的输入和输出.每个输入或输出变量分配一个所谓的位置.由OpenGL隐式提供,glGetAttribLocation并由程序员使用location存储限定符属性或glBindAttribLocation函数显式检索或显式检索.输出由片段数据位置类似地分配.