Я пытаюсь использовать простой шейдер glsl, загруженный из файла. Это то, что у меня есть:Шиндеры OpenGL компилируют ошибку мусора
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 содержит некоторое содержание мусора вместо журнального сообщения. Мой вопрос: как получить сообщение об ошибке и отобразить его в stdout, чтобы отладить мой шейдер?
Ну, я нашел ошибку где-то еще, но спасибо за указание на проблему размера файла. – ghi
Вы можете ответить на свой вопрос. –