Example #1
0
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";
}
Example #2
0
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;
}