Number5
Visualisierung 2 Project - Florian Schober (0828151, f.schober@live.com), Andreas Walch (0926780, walch.andreas89@gmail.com)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Shader.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Texture.hpp"
4 
8 class Shader
9 {
10  uint m_id;
11  string m_name;
12  map<string,GLint> m_uniforms;
14  public:
20  Shader(string const & name);
24  ~Shader();
25 
29  void use();
30 
36  GLint uniform(string const & name);
42  GLint uniformBlock(string const & name);
43 
50  void uniform(string const& name, mat4 const * values, size_t const size) { glUniformMatrix4fv(uniform(name),size,GL_FALSE,reinterpret_cast<float const *>(values)); }
51 
57  void uniform(string const& name, mat4 const & value) { glUniformMatrix4fv(uniform(name),1,GL_FALSE,glm::value_ptr(value)); }
63  void uniform(string const& name, mat3 const & value) { glUniformMatrix3fv(uniform(name),1,GL_FALSE,glm::value_ptr(value)); }
69  void uniform(string const& name, vec4 const & value) { glUniform4f(uniform(name),value.x, value.y, value.z, value.w); }
75  void uniform(string const& name, vec3 const & value) { glUniform3f(uniform(name),value.x, value.y, value.z); }
81  void uniform(string const& name, vec2 const & value) { glUniform2f(uniform(name),value.x, value.y); }
87  void uniform(string const& name, float value) { glUniform1f(uniform(name),value); }
93  void uniform(string const& name, int value) { glUniform1i(uniform(name),value); }
99  void uniform(string const& name, uint value) { glUniform1ui(uniform(name),value); }
105  void uniform(string const& name, uint16 value) { glUniform1ui(uniform(name),value); }
106 
107  private:
114  int loadShader(string const & file, GLenum shaderType);
118  void link();
119 
120  public:
121 
122  static const uint position = 0;
123  static const uint normal = 1;
124  static const uint uv = 2;
125  static const uint boneId = 3;
126  static const uint boneWeight = 4;
127 };
128 
129 
134 class Shaders
135 {
136  map<string,unique_ptr<Shader>> m_shaders;
138  public:
145  Shader* get(string const & name);
146 };
void use()
Definition: Shader.cpp:111
void uniform(string const &name, int value)
Definition: Shader.hpp:93
map< string, unique_ptr< Shader > > m_shaders
Definition: Shader.hpp:136
string m_name
Definition: Shader.hpp:11
static const uint boneWeight
Definition: Shader.hpp:126
~Shader()
Definition: Shader.cpp:28
void uniform(string const &name, mat4 const *values, size_t const size)
Definition: Shader.hpp:50
Definition: Shader.hpp:8
map< string, GLint > m_uniforms
Definition: Shader.hpp:12
void uniform(string const &name, vec4 const &value)
Definition: Shader.hpp:69
static const uint position
Definition: Shader.hpp:122
void uniform(string const &name, mat3 const &value)
Definition: Shader.hpp:63
static const uint uv
Definition: Shader.hpp:124
void uniform(string const &name, uint value)
Definition: Shader.hpp:99
int loadShader(string const &file, GLenum shaderType)
Definition: Shader.cpp:34
void uniform(string const &name, float value)
Definition: Shader.hpp:87
void link()
Definition: Shader.cpp:88
void uniform(string const &name, vec3 const &value)
Definition: Shader.hpp:75
uint m_id
Definition: Shader.hpp:10
GLint uniformBlock(string const &name)
Definition: Shader.cpp:125
void uniform(string const &name, uint16 value)
Definition: Shader.hpp:105
void uniform(string const &name, mat4 const &value)
Definition: Shader.hpp:57
Shader(string const &name)
Definition: Shader.cpp:4
void uniform(string const &name, vec2 const &value)
Definition: Shader.hpp:81
static const uint normal
Definition: Shader.hpp:123
static const uint boneId
Definition: Shader.hpp:125
GLint uniform(string const &name)
Definition: Shader.cpp:115