.. _program_listing_file_Src_GraphicsEngineOpenGL_renderer_ShaderProgram.hpp: Program Listing for File ShaderProgram.hpp ========================================== |exhale_lsh| :ref:`Return to documentation for file ` (``Src/GraphicsEngineOpenGL/renderer/ShaderProgram.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include #include class ShaderProgram { public: 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); GLuint get_id() const; void use_shader_program(); void validate_program(); ~ShaderProgram(); protected: std::string shader_base_dir; GLuint program_id; // the file locations from our shaders const char *vertex_location; const char *fragment_location; const char *geometry_location; const char *compute_location; void add_shader(GLuint program, const char *shader_code, GLenum shader_type); 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(); bool validateUniformLocation(GLint uniformLocation); GLuint getUniformLocation(const std::string &shaderUniformName, bool &validity); void clear_shader_program(); };