OpenGL ES2:在顶点着色器(iOS)中使用“ layout”关键字时出现语法错误

问题描述 投票:0回答:1

我是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
ios objective-c opengl-es glsl shader
1个回答
0
投票

在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
© www.soinside.com 2019 - 2024. All rights reserved.