#ifndef SHADER_H #define SHADER_H #include #include #include class Shader { static const std::string DEFAULT_VERT; static const std::string DEFAULT_FRAG; GLuint program; GLuint createShader(const std::string &source, GLenum shaderType); void printShaderInfoLog(GLuint shaderId); void printProgramInfoLog(GLuint programId); public: Shader(const std::string &vertexSource, const std::string &fragmentSource); ~Shader(); GLuint getLocation(std::string attribName); void bind(); void unbind(); void bindFloat(GLuint location, float val); void bindMatrix(GLuint location, glm::mat4 mat); void bindVec3(GLuint location, glm::vec3 vec); void bindVec3Array(GLuint location, glm::vec3* vec, int nb_elements); void bindTexture(GLuint location, GLuint tex_id); }; #endif // SHADER_H