#ifndef SHADER_H
#define SHADER_H

#include <GL/glew.h>

class Shader final {
public:
    Shader();
    ~Shader();
    Shader(const Shader& other) = delete;
    Shader(Shader&& other) = delete;
    Shader& operator=(const Shader& other) = delete;
    Shader& operator=(Shader&& other) = delete;

    bool hasError() const;
    void use() const;

private:
    void clean();
    bool compile(GLuint& shader, const GLchar* code, GLenum shaderType);

    GLuint vShader;
    GLuint fShader;
    GLuint program;
};

#endif