현재 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);
}
모든 단서?
오류 메시지가 표시됩니다. –