在IOS上移动到ES 3.0后,顶点着色器无法编译

时间:2017-02-13 21:29:18

标签: ios opengl-es glsl shader

将所有着色器移动到ES3.0后,我的compileShader在第一行出错。

#version 300

它给出了语法错误: 错误:0:2:'' :语法错误:#version

如果它是错误的版本,那么我原本期望获得不受支持的版本,而不是语法错误。所以这令人困惑,为什么它不会识别语法。我检查了传递给编译着色器的源,它开始于#version 300 \ n \ n \ n。

在设置上下文后,我的版本是" OpenGL ES 3.0 Apple A7 GPU - 95.16"。

这是我编译它的方式:

GLint status;
const GLchar *source;

source = (GLchar *) [ [ NSString stringWithContentsOfFile:file encoding:NSUTF8StringEncoding error:nil ] UTF8String ];

if (!source)
{
    DebugLog(@"Failed to load shader %@", file);
    return FALSE;
}

*shader = glCreateShader( type );
glShaderSource( *shader, 1, &source, NULL );
glCompileShader( *shader );

2 个答案:

答案 0 :(得分:1)

我能够通过在#version命令中附加核心来解决这个错误。它似乎是一个可选参数,但它帮助我超越了语法错误。

#version core

答案 1 :(得分:0)

OpenGL ES 3.0的正确语法是#version 300 es