GameKit  0.0.1a
C++ gamedev tools
Shader.hpp
Go to the documentation of this file.
1 /*
2  * =====================================================================================
3  *
4  * Filename: Shader.hpp
5  *
6  * Description:
7  *
8  * Created: 15/12/2014 16:30:20
9  *
10  * Author: Quentin Bazin, <quent42340@gmail.com>
11  *
12  * =====================================================================================
13  */
14 #ifndef GK_SHADER_HPP_
15 #define GK_SHADER_HPP_
16 
17 #include <string>
18 #include <vector>
19 
20 #include <glm/glm.hpp>
21 
22 #include "gk/gl/OpenGL.hpp"
23 
24 namespace gk {
25 
26 class Transform;
27 
28 class Shader {
29  public:
30  Shader() = default;
31  Shader(const std::string &vertexFilename, const std::string &fragementFilename);
32  ~Shader();
33 
34  void loadFromFile(const std::string &vertexFilename, const std::string &fragementFilename);
35 
36  void createProgram();
37  void linkProgram();
38 
39  void addShader(GLenum type, const std::string &filename);
40 
41  GLint attrib(const std::string &name) const;
42  GLint uniform(const std::string &name) const;
43 
44  void enableVertexAttribArray(const std::string &name) const;
45  void disableVertexAttribArray(const std::string &name) const;
46 
47  void setUniform(const std::string &name, int n) const;
48  void setUniform(const std::string &name, float x, float y) const;
49  void setUniform(const std::string &name, const glm::mat4 &matrix) const;
50  void setUniform(const std::string &name, const Transform &transform) const;
51 
52  static void bind(const Shader *shader);
53 
54  GLint program() const { return m_program; }
55 
56  private:
57  std::vector<GLuint> m_vertexShaders;
58  std::vector<GLuint> m_fragmentShaders;
59 
60  GLuint m_program;
61 };
62 
63 } // namespace gk
64 
65 #endif // GK_SHADER_HPP_
void enableVertexAttribArray(const std::string &name) const
Definition: Shader.cpp:154
void disableVertexAttribArray(const std::string &name) const
Definition: Shader.cpp:158
Shader()=default
void createProgram()
Definition: Shader.cpp:54
static void bind(const Shader *shader)
Definition: Shader.cpp:178
std::vector< GLuint > m_fragmentShaders
Definition: Shader.hpp:58
void loadFromFile(const std::string &vertexFilename, const std::string &fragementFilename)
Definition: Shader.cpp:45
void linkProgram()
Definition: Shader.cpp:58
void addShader(GLenum type, const std::string &filename)
Definition: Shader.cpp:81
GLint program() const
Definition: Shader.hpp:54
GLint attrib(const std::string &name) const
Definition: Shader.cpp:132
std::vector< GLuint > m_vertexShaders
Definition: Shader.hpp:57
void setUniform(const std::string &name, int n) const
Definition: Shader.cpp:162
GLuint m_program
Definition: Shader.hpp:60
GLint uniform(const std::string &name) const
Definition: Shader.cpp:143