#ifndef SHADER_HPP_INCLUDED #define SHADER_HPP_INCLUDED #include <glad/glad.h> #include <string> #include <fstream> #include <sstream> #include <iostream> #include <glm/glm.hpp> #include <glm/gtc/type_ptr.hpp> class Shader{ public: Shader(); Shader(const char* vertexPath, const char* fragmentPath); Shader(const Shader& other) = default; Shader& operator=(const Shader& other) = default; ~Shader() = default; void clean_up(){glDeleteShader(ID);} // use/activate the shader void use(); // utility uniform functions void setBool(const std::string &name, bool value) const; void setInt(const std::string &name, int value) const; void setFloat(const std::string &name, float value) const; void setVec2(const std::string &name, glm::vec2 vec) const; void setVec3(const std::string &name, glm::vec3 vec) const; void setVec4(const std::string &name, glm::vec4 vec) const; void setMat4(const std::string &name, glm::mat4 mat) const; //TODO: make this private unsigned int ID; //shader program ID }; #endif