我是iPhone OpenGL ES开发的新手。当我尝试使用“ layout”关键字指定顶点属性的位置时,编译器会抱怨语法错误。我使用错了吗?还是编译器不支持关键字?我知道还有其他方法可以指定位置,但是我想知道为什么这个方法对我不起作用。顺便说一句,我正在使用OpenGLES2.0 API。
顶点着色器是:
layout(location = 0) in vec3 position;
void main() {
gl_Position = vec4(position, 1.0);
}
顶点着色器编译日志:
2019-12-25 10:47:48.518110+0800 OpenGLESTest[14556:1063881] compile vertex shader error! 2019-12-25 10:47:48.518284+0800 OpenGLESTest[14556:1063881] compile stage info log ERROR: 0:1: 'layout' : syntax error: syntax error
在OpenGL ES 2.0和OpenGL ES Shading Language 1.00中,既不支持Layout Qualifiers
也不支持关键字Layout Qualifiers
。如果要使用布局限定符,则必须切换到OpenGL ES 3.00和in
。参见OpenGL ES Shading Language 3.00。
正确的GLSL ES 1.00顶点着色器(对应于OpenGL ES 2.00):
Khronos OpenGL ES Registry