diff --git a/Outputs/CRT/Internals/Shader.hpp b/Outputs/CRT/Internals/Shader.hpp index a585b7819..5a4dc4117 100644 --- a/Outputs/CRT/Internals/Shader.hpp +++ b/Outputs/CRT/Internals/Shader.hpp @@ -12,52 +12,59 @@ #include "OpenGL.hpp" namespace OpenGL { - class Shader { - public: - enum { - VertexShaderCompilationError, - FragmentShaderCompilationError, - ProgramLinkageError - }; - struct AttributeBinding { - const GLchar *name; - GLuint index; - }; +/*! + A @c Shader compiles and holds a shader object, based on a single + vertex program and a single fragment program. Attribute bindings + may be supplied if desired. +*/ +class Shader { +public: + enum { + VertexShaderCompilationError, + FragmentShaderCompilationError, + ProgramLinkageError + }; - /*! - Attempts to compile a shader, throwing @c VertexShaderCompilationError, @c FragmentShaderCompilationError or @c ProgramLinkageError upon failure. - @param vertex_shader The vertex shader source code. - @param fragment_shader The fragment shader source code. - @param attribute_bindings Either @c nullptr or an array terminated by an entry with a @c nullptr-name of attribute bindings. - */ - Shader(const char *vertex_shader, const char *fragment_shader, const AttributeBinding *attribute_bindings); - ~Shader(); + struct AttributeBinding { + const GLchar *name; + GLuint index; + }; - /*! - Performs an @c glUseProgram to make this the active shader. - */ - void bind(); + /*! + Attempts to compile a shader, throwing @c VertexShaderCompilationError, @c FragmentShaderCompilationError or @c ProgramLinkageError upon failure. + @param vertex_shader The vertex shader source code. + @param fragment_shader The fragment shader source code. + @param attribute_bindings Either @c nullptr or an array terminated by an entry with a @c nullptr-name of attribute bindings. + */ + Shader(const char *vertex_shader, const char *fragment_shader, const AttributeBinding *attribute_bindings); + ~Shader(); - /*! - Performs a @c glGetAttribLocation call. - @param name The name of the attribute to locate. - @returns The location of the requested attribute. - */ - GLint get_attrib_location(const GLchar *name); + /*! + Performs an @c glUseProgram to make this the active shader. + */ + void bind(); - /*! - Performs a @c glGetUniformLocation call. - @param name The name of the uniform to locate. - @returns The location of the requested uniform. - */ - GLint get_uniform_location(const GLchar *name); + /*! + Performs a @c glGetAttribLocation call. + @param name The name of the attribute to locate. + @returns The location of the requested attribute. + */ + GLint get_attrib_location(const GLchar *name); + + /*! + Performs a @c glGetUniformLocation call. + @param name The name of the uniform to locate. + @returns The location of the requested uniform. + */ + GLint get_uniform_location(const GLchar *name); - private: - GLuint compile_shader(const char *source, GLenum type); - GLuint _shader_program; - }; +private: + GLuint compile_shader(const char *source, GLenum type); + GLuint _shader_program; +}; + } #endif /* Shader_hpp */