1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-04 18:29:40 +00:00

Standardised indentation and added one extra piece of documentation.

This commit is contained in:
Thomas Harte 2016-04-19 20:53:55 -04:00
parent 20aa9e291d
commit 88e237b8de

View File

@ -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 */