刚接触OpenGL ES2.0和GLSL,想用shaders来处理Images。我在Xcode中编码时,直接使用gl_Normal
、gl_Vertex
等内置变量,并没有在着色器的开头声明它们。最后,我收到一条错误消息:
Use of undeclared identifier
gl_Normal
. why?
最佳答案
Use of undeclared identifier gl_Normal. why?
在 OpenGL-ES 2 中,并跟随其 OpenGL-3 核心的脚步,不再有预定义的着色器输入变量。 OpenGL-4 甚至取消了预定义的着色器输出。
相反,您需要定义自己的输入和输出。每个输入或输出变量都分配了一个所谓的位置。由 OpenGL 隐式地由 glGetAttribLocation
检索,或者由程序员使用 location
存储限定符属性或 glBindAttribLocation
函数显式地检索。输出类似地由片段数据位置分配。
关于opengl-es - OpenGL ES 2.0 中的 GLSL 是否支持 gl_Normal gl_Vertex 等内置变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9326631/