将所有着色器移动到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 );
答案 0 :(得分:1)
我能够通过在#version命令中附加核心来解决这个错误。它似乎是一个可选参数,但它帮助我超越了语法错误。
#version core
答案 1 :(得分:0)
OpenGL ES 3.0的正确语法是#version 300 es