2017-02-13 196 views
0

将所有着色器移至ES3.0后,我的compileShader在第一行发生故障。移动到ES 3.0后,顶点着色器不会编译IOS

#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); 
+0

请出示完整的着色器,以及如何加载/编译。 – BDL

+0

我只是设法超越了错误。如果我使用#version核心,它能够处理语法。 – nishant

回答

0

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

1

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

#version core