编译着色器后,您可以检查GL_COMPILE_STATUS
if it is GL_FALSE
,您可以使用 useglGetShaderInfoLog
获取有关编译错误的其他信息。
这是一个展示如何使用 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.");
}