std::string Game::SetQuadFragShader(const std::string &str) { Shader *temp = Shader::CreateFromString(str.c_str(), GL_FRAGMENT_SHADER, ShaderFlags::ADD_HEADER); if(temp->GetShaderiv(GL_COMPILE_STATUS) != GL_TRUE) { std::string output; char buf[1024]; int length = 0; glGetShaderInfoLog(temp->GetID(), 1024, &length, buf); buf[length - 1] = '\0'; output = "Shader compilation FAILED!\n"; return output.append(buf); } renderer->ReplaceFragShader(temp); return "Shader compilation SUCCESSFUL"; }
bool Program::AttachShader(const Shader& shader) { // Attach and link shader glAttachShader(id, shader.GetID()); glLinkProgram(id); // Check linking result GLint result = 0; glGetProgramiv(id, GL_LINK_STATUS, &result); if (result != GL_TRUE) { // Buffer for any linking error messages char error[ERROR_BUFFER_LENGTH]; GLsizei length = 0; glGetProgramInfoLog(id, ERROR_BUFFER_LENGTH - 1, &length, error); // Print error cerr << "Shader failed to link:" << endl << error; return false; } return true; }