我是OpenGL ES2.0和GLSL的新手,我想使用着色器来处理图像。当我在Xcode中编码时,我直接使用了内置变量,例如gl_Normal
,gl_Vertex
,并且没有在着色器的开头声明它们。最后,我收到了一条错误消息:
使用未声明的标识符
gl_Normal
。为什么呢?
答案 0 :(得分:5)
使用未声明的标识符gl_Normal。为什么呢?
在OpenGL-ES 2中,跟随其脚步OpenGL-3核心,不再有预定义的着色器输入变量。 OpenGL-4甚至完成了预定义的着色器输出。
相反,您需要定义自己的输入和输出。每个输入或输出变量分配一个所谓的位置。由OpenGL隐式提供,可由glGetAttribLocation
检索,或由程序员使用location
存储限定符属性或glBindAttribLocation
函数显式提取。输出由片段数据位置类似地分配。