Class ShaderProgram#

Inheritance Relationships#

Derived Types#

Class Documentation#

class ShaderProgram#

Subclassed by ComputeShaderProgram, GeometryPassShaderProgram, LightingPassShaderProgram, OmniDirShadowShaderProgram

Public Functions

ShaderProgram()#
ShaderProgram(const ShaderProgram&) = default#
void create_from_files(const char *vertex_location, const char *fragment_location)#
void create_from_files(const char *vertex_location, const char *geometry_location, const char *fragment_location)#
void create_computer_shader_program_from_file(const char *compute_location)#
bool setUniformVec3(glm::vec3 uniform, const std::string &shaderUniformName)#
bool setUniformFloat(GLfloat uniform, const std::string &shaderUniformName)#
bool setUniformInt(GLint uniform, const std::string &shaderUniformName)#
bool setUniformMatrix4fv(glm::mat4 matrix, const std::string &shaderUniformName)#
bool setUniformBlockBinding(GLuint block_binding, const std::string &shaderUniformName) const#
GLuint get_id() const#
void use_shader_program() const#
void validate_program() const#
~ShaderProgram()#

Protected Functions

void compile_shader_program(const char *vertex_code, const char *fragment_code)#
void compile_shader_program(const char *vertex_code, const char *geometry_code, const char *fragment_code)#
void compile_compute_shader_program(const char *compute_code)#
void compile_program()#
GLuint getUniformLocation(const std::string &shaderUniformName, bool &validity)#
void clear_shader_program()#

Protected Attributes

std::string shader_base_dir#
GLuint program_id#
bool program_is_linked = {false}#
const char *vertex_location#
const char *fragment_location#
const char *geometry_location#
const char *compute_location#

Protected Static Functions

static void add_shader(GLuint program, const char *shader_code, GLenum shader_type)#
static bool validateUniformLocation(GLint uniformLocation)#