2D_Game_Engine
Loading...
Searching...
No Matches
shader.hpp
Go to the documentation of this file.
1#pragma once
2
3class Shader{
4public:
5
6 Shader(const char *vertex_shader_path,const char *fragment_shader_path);
7 Shader()=default;
8 ~Shader();
9 void Load(const char *vertex_shader_path,const char *fragment_shader_path);
10 void Unload();
11 void Reload();
12
13 void Bind() const;
14 void Unbind() const;
15 inline unsigned int getID(){ return m_ID; }
16
17 void SetUniform4f(const std::string &name,float v0,float v1,float v2,float v3);
18 void SetUniform3f(const std::string &name,float v0,float v1,float v2);
19 void SetUniform2f(const std::string &name,float v0,float v1);
20 void SetUniform1f(const std::string &name,float v0);
21 void SetUniformMat4fv(const std::string &name,float *proj,unsigned int num_elem);
22 void SetUniform1iv(const std::string &name,int *v,unsigned int num_elem);
23 void SetUniform1i(const std::string &name,int v0);
24 static void SetSubroutineUniform(unsigned int uniform_index);
25 static unsigned int GetSubroutineIndex(const char *uniform_name,unsigned int shader_id);
26
27private:
28 std::unordered_map<std::string,int>m_UniformsCache;
29 unsigned int m_ID;
30
31 bool m_Loaded=false;
32
33 char *m_VertexPath=nullptr;
34 char *m_FragmentPath=nullptr;
35
36 void Compile(const char *vertex_src_code,const char *fragment_src_code);
37 bool CheckShaderErrors(GLuint shader_ID);
38 int GetUniformLocation(const std::string &name);
39};
void SetUniform4f(const std::string &name, float v0, float v1, float v2, float v3)
Definition shader.cpp:116
static unsigned int GetSubroutineIndex(const char *uniform_name, unsigned int shader_id)
Definition shader.cpp:154
void SetUniform2f(const std::string &name, float v0, float v1)
Definition shader.cpp:124
void Bind() const
Definition shader.cpp:68
void SetUniform1iv(const std::string &name, int *v, unsigned int num_elem)
Definition shader.cpp:128
void Load(const char *vertex_shader_path, const char *fragment_shader_path)
Definition shader.cpp:16
void Reload()
Definition shader.cpp:63
void SetUniform1f(const std::string &name, float v0)
Definition shader.cpp:132
void SetUniform1i(const std::string &name, int v0)
Definition shader.cpp:140
void Unload()
Definition shader.cpp:56
void SetUniformMat4fv(const std::string &name, float *proj, unsigned int num_elem)
Definition shader.cpp:136
static void SetSubroutineUniform(unsigned int uniform_index)
Definition shader.cpp:163
unsigned int getID()
Definition shader.hpp:15
void SetUniform3f(const std::string &name, float v0, float v1, float v2)
Definition shader.cpp:120
void Unbind() const
Definition shader.cpp:72
Shader()=default
~Shader()
Definition shader.cpp:8