2012-12-28 2 views
1

현재 GLSL 셰이더를 컴파일하는 동안 발생하는 오류에 대한 좌절감으로 머리카락을 찢어 내고 있습니다. 두 셰이더를 모두 성공적으로 관리했지만 성공적으로 연결 한 경우 오류가 발생합니다. 출력이 없지만 연결에 실패했습니다. 여기 GLSL 링크 오류

는 컴파일 연결 코드 +된다

GLuint program = NULL; 
GLint compile_ok = GL_FALSE, link_ok = GL_FALSE; 

GLuint vs = glCreateShader(GL_VERTEX_SHADER); 
glShaderSource(vs, 1, &vertCont, NULL); 
glCompileShader(vs); 
glGetShaderiv(vs, GL_COMPILE_STATUS, &compile_ok); 
char logBuf[1024]; 
int len; 
if (0 == compile_ok) 
{ 
    glGetShaderInfoLog(vs, sizeof(logBuf), &len, logBuf); 
    LogMgr::logMessage(LogMgr::CRITICAL, "Error in vertex shader\n", logBuf); 
    return false; 
} 

GLuint fs = glCreateShader(GL_FRAGMENT_SHADER); 
glShaderSource(fs, 1, &fragCont, NULL); 
glCompileShader(fs); 
glGetShaderiv(fs, GL_COMPILE_STATUS, &compile_ok); 
if (!compile_ok) 
{ 
    glGetShaderInfoLog(vs, sizeof(logBuf), &len, logBuf); 
    LogMgr::logMessage(LogMgr::CRITICAL, "Error in fragment shader", logBuf); 
    return false; 
} 

glAttachShader(program, vs); 
glAttachShader(program, fs); 
glLinkProgram(program); 
glGetProgramiv(program, GL_LINK_STATUS, &link_ok); 
if (!link_ok) 
{ 
    glGetShaderInfoLog(vs, sizeof(logBuf), &len, logBuf); 
    LogMgr::logMessage(LogMgr::CRITICAL, "Could not link basic shaders!", logBuf); 
    return false; 
} 
return program; 

을 그리고 여기 버텍스 쉐이더입니다 :

#version 330 

layout(location = 0) in vec4 position; 
void main() 
{ 
    gl_Position = position; 
} 

조각 쉐이더 :

#version 330 

out vec4 outputColor; 
void main() 
{ 
    outputColor = vec4(1.0f, 0.0f, 1.0f, 1.0f); 
} 

모든 단서?

+4

오류 메시지가 표시됩니다. –

답변

0

문제는 내가이었다 :

glGetShaderInfoLog(fs, sizeof(logBuf), &len, logBuf); 

와 링크 상태에 대한

프로그램 개체를 만들지 않았습니다. 이 코드 줄을 추가하여 연결했습니다.

program = glCreateProgram(); 
7

getShaderInfoLog에 대한 호출이 잘못되었습니다. 버텍스 쉐이더에 대한 컴파일 로그를 항상 확인하고 있습니다. 이는 오류 메시지가 표시되지 않는 이유를 설명합니다. 당신은 복사 및 붙여 넣기 코드에 대해 무엇을 얻을 그리고 그건, 그것은해야한다, 조각 쉐이더를 들어

) :

glGetProgramInfoLog(program, sizeof(logBuf), &len, logBuf); 
+0

고마워요! 나는 지금 그것을 시도 할 것이다, 나는 그 것을 바꾸는 것을 잊었다 xD – Alx101

+0

좋아, 내가 그것을 바꾼 후에, 이것은 내가 링커 오류로 얻는 것이다 : [| [| [[[[ | | | | | | | | | | | | | | | | | | | | | | | | | | [| [| [| [| [[[[[[[ 이제는 좋지 않습니다. S 편집 : 여기에 실제 오류 텍스트가 표시된 사진에 대한 링크가 있습니다 (작성한 것과 같은 방식으로 복사 할 수 없습니다) https://dl.dropbox.com/ u/38127392/Untitled.png – Alx101

+0

질문에있는 코드를 지금 가지고 계신 코드로 업데이트 해 주실 수 있습니까? – Thomas