파일에서로드 된 간단한 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
당신은 당신 자신의 질문에 대답 할 수 있습니다. –