#ifndef SHADERPROGRAM_H #define SHADERPROGRAM_H #include #include #include #include namespace djalim { class ShaderProgram { public: ShaderProgram(); ~ShaderProgram(); bool loadShaders(const char* vertexShaderFile, const char* fragmentShaderFile); void use(); void setUniform(const std::string& name, float value); void setUniform(const std::string& name, int value); void setUniform(const std::string& name, const glm::vec2& value); void setUniform(const std::string& name, const glm::vec3& value); void setUniform(const std::string& name, const glm::vec4& value); void setUniform(const std::string& name, const glm::mat4& value); GLuint getProgram() const { return mHandle; } private: std::string fileToString(const std::string& filename); void checkCompileErrors(GLuint shader, std::string type); GLuint mHandle; }; } #endif // SHADERPROGRAM_H