Shader.h 884 B

1234567891011121314151617181920212223242526272829303132333435
  1. #ifndef SHADER_H
  2. #define SHADER_H
  3. #include <GL/glew.h>
  4. #include <GLFW/glfw3.h>
  5. #include <iostream>
  6. #include <vector>
  7. class Shader final {
  8. public:
  9. Shader(const GLchar* vPath, const GLchar* fPath);
  10. ~Shader();
  11. bool isValid() const;
  12. void use() const;
  13. void setMatrix(const GLchar* name, const GLfloat* data) const;
  14. void setInt(const GLchar* name, GLint data) const;
  15. void setFloat(const GLchar* name, GLfloat data) const;
  16. private:
  17. Shader(const Shader& other) = delete;
  18. Shader(Shader&& other) = delete;
  19. Shader& operator=(const Shader& other) = delete;
  20. Shader& operator=(Shader&& other) = delete;
  21. bool readFile(std::vector<GLchar>& buffer, const GLchar* path) const;
  22. bool compileShader(GLuint& shader, const GLchar* code, GLenum shaderType) const;
  23. bool valid;
  24. GLuint vShader;
  25. GLuint fShader;
  26. GLuint program;
  27. };
  28. #endif