【发布时间】:2014-12-19 12:45:11
【问题描述】:
我正在尝试使用从文件加载的简单 glsl 着色器。这就是我所拥有的:
GLuint
shdld(char *path) {
GLuint shd;
GLint cflag, nlog;
FILE *fp;
int i, c;
GLchar source[1000], elog[1000];
fp = fopen(path, "r");
if (fp == NULL) {
printf("Unable to open file %s\n", path);
return 0;
}
for (i = 0; (c = getc(fp)) != EOF; i++)
source[i] = c;
source[i++] = '\0';
fclose(fp);
shd = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(shd, 1, source, NULL);
glCompileShader(shd);
cflag = GL_FALSE;
glGetShaderiv(shd, GL_COMPILE_STATUS, &cflag);
if (cflag == GL_FALSE) {
glGetShaderInfoLog(shd, sizeof elog, NULL, elog);
printf("Unable to compile shader %s\n", path);
printf("%s\n", elog);
glDeleteShader(shd);
return 0;
}
return shd;
}
不幸的是,着色器无法编译,更糟糕的是,elog 包含一些垃圾内容,而不是日志消息。我的问题是:如何获取错误消息并将其显示到标准输出中以调试我的着色器?
【问题讨论】:
标签: c opengl gcc glut opengl-4