1 #ifndef _SHADERPROGRAM_H
2 #define _SHADERPROGRAM_H
11 * The "Shader" class represents a GLSL program made from shaders.
16 ShaderProgram() : m_program(0), m_valid(false) {};
18 bool InitialiseShaders(const char * vert_glsl_file, const char * frag_glsl_file, const char * geom_glsl_file = "");
19 const void Use() const;
21 bool Valid() const {return m_valid;}
23 // Unfortunately, we don't require GL 4.3/ARB_explicit_uniform_location
24 // which would make this obsolete. One uday Mesa will support it.
25 // NOTE: We could actually get away with this by only using UBOs, as
26 // Mesa supports ARB_shading_language_420pack, but that'd be a bit more
27 // work right with the way some of our uniforms are laid out at the moment.
28 const GLint GetUniformLocation(const char *uniform_name) const;
31 char * GetShaderSource(const char * src_file) const;
32 bool AttachShader(const char * src_file, GLenum type);
40 std::vector<Shader> m_shaders;
46 #endif // _SHADERPROGRAM_H