我完全被困在这里了。我有以下片段着色器在工作:
varying lowp vec4 fposition;
varying lowp vec4 fcolor;
varying lowp vec2 ftexturecoordinates;
void main() {
gl_FragColor = fcolor;
}如果我试图添加任何内容(例如:vec4 light position = vec4(-2.0, 2.0, 1.0, 1.0)),它将不会编译。我不知道如何获得错误代码/描述,但我不能让任何正常的OpenGL ES着色器工作。我有相同的着色器编译代码在这个应用程序和我在我的所有其他应用程序,所以我知道这部分工作很好。如果有的话,我能做些什么来找到关于这个问题的信息呢?
发布于 2012-12-05 20:14:34
编译着色器后,可以检查GL_COMPILE_STATUS (如果是GL_FALSE ),可以使用glGetShaderInfoLog获取有关编译错误的其他信息。
下面是演示如何使用glGetShaderInfoLog的片段:
(我将项目特定的错误签入以供参考,但将其注释掉,因为没有其周围的框架,它将无法工作。)
glCompileShader(shader);
//mada_check_gl_error();
GLint compiled;
glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
//mada_check_gl_error();
if (!compiled)
{
GLint length;
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &length);
//mada_check_gl_error();
if (length > 0)
{
GLint infoLength;
char* infoBuf = (char*) malloc(sizeof(char) * length);
glGetShaderInfoLog(shader, length, &infoLength, infoBuf);
//mada_check_gl_error();
//mada_log(logERROR, infoBuf);
free(infoBuf);
//SysUtils::error("Error compiling shader. See log for info.");
}
//SysUtils::error("Failed to compile shader. No further info available.");
}https://stackoverflow.com/questions/13731168
复制相似问题