移动到ES 3.0后,顶点着色器不会编译IOS
问题描述:
将所有着色器移至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);
答
为的OpenGL ES 3.0的正确语法是#version 300 es
答
我能够通过附加核心,其中的#Version命令来解决这个错误。它似乎是一个可选参数,但它帮助我超越了语法错误。
#version core
请出示完整的着色器,以及如何加载/编译。 – BDL
我只是设法超越了错误。如果我使用#version核心,它能够处理语法。 – nishant