2
我試圖設置一個簡單的頂點着色器。當我編譯它時,它失敗(根據GL_COMPILE_STATUS),但是信息日誌是空的,從調試的角度看,我沒有任何工作要做。頂點着色器無法編譯,但沒有來自Info Log的消息
這裏是我的代碼:
GLuint vertexShader, fragmentShader;
char *code =
"void main(void)\
{\
vec4 a = gl_Vertex;\
a.x = a.x * 0.5;\
a.y = a.y * 0.5;\
gl_Position = gl_ModelViewProjectionMatrix * a;\
}";
int length = strlen(code);
vertexShader = glCreateShader(GL_VERTEX_SHADER);
//fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(vertexShader, 1, &code, &length);
glCompileShader(GL_VERTEX_SHADER);
GLint compiled;
GLint logLength;
glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &compiled);
glGetShaderiv(vertexShader, GL_INFO_LOG_LENGTH , &logLength);
if (logLength > 1)
{
GLchar* compiler_log = (GLchar*)malloc(logLength);
glGetShaderInfoLog(vertexShader, logLength, 0, compiler_log);
printf("%s\n", compiler_log);
free (compiler_log);
}
我知道,這是相當混亂,因爲我是新來的着色我敢肯定有什麼毛病我的着色器代碼。但是,讓我失望的是沒有調試信息。上面的代碼導致compiled
爲GL_FALSE
(表示代碼編譯失敗)和logLength
爲0(表示信息日誌爲空)。是什麼賦予了?這不是信息日誌的全部要點嗎?
哇,我覺得愚蠢。我想'GLenum'基本上是一個'GLuint',它並沒有給我一個錯誤。它也解釋了爲什麼'vertexShader'沒有錯誤日誌,因爲我甚至沒有嘗試過編譯它!我會暫時休息一下。 – 2013-05-08 19:33:29