Blamite Game Engine - blam!  00296.01.12.21.0102.blamite
The core library for the Blamite Game Engine.
shaders.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <map>
4 #include <vector>
5 
7 #include "uniforms/uniforms.h"
8 
9 #ifndef BLAM
10 #define BLAM
11 #endif
12 
14 {
16 };
17 
19 {
23 };
24 
26 {
27 private:
28  std::string id = "";
30  void* source;
31  int source_length = 0;
32 
33  GLuint shader = 0;
34 
35  GLint compile_status = 0;
36  char compile_log[1024];
37 
38 public:
39  BlamGLSLShader(std::string _id, BlamGLSLShaderType _type, std::string _source);
41 
42  std::string GetID();
43  bool Compile();
44  GLuint GetGLShaderID();
45 };
46 
48 {
49 private:
50  std::string id = "";
51 
52  GLuint shader_program = 0;
53 
54  std::vector<std::string> attached_shaders;
55  std::vector<BlamGLSLShaderUniform*> uniforms;
56 
57 public:
58  BlamGLSLShaderProgram(std::string _id);
60 
61  std::string GetID();
62  GLuint GetGLProgramID();
63  void AttachShader(std::string shader_id);
64  void AttachShader(BlamGLSLShader* shader);
65  void LinkProgram();
66  void UseProgram();
67 
68  void RegisterUniform(std::string name, BlamShaderUniformType type);
69  void PrepareUniforms();
70  void UpdateUniform(std::string name);
71  void UpdateUniforms();
72 
73  BlamShaderUniform1F* GetUniform1F(std::string name);
74 
75  std::vector<std::string>* GetLinkedShaders();
76  std::vector<BlamGLSLShaderUniform*>* GetUniforms();
77 };
78 
80 {
81  BLAM void LoadShaders();
82  BLAM void LoadShaderPrograms();
83  BLAM void CompileShaders();
84  BLAM void CleanupShaders();
86 
88  BLAM void LinkShaderProgram(std::string id);
90 
91  BLAM void UpdateAllShaderUniforms(bool quiet);
92 
93  BLAM BlamGLSLShader* GetShader(std::string id);
95 
96  BLAM std::map<std::string, BlamGLSLShader*>* GetShaders();
97  BLAM std::map<std::string, BlamGLSLShaderProgram*>* GetShaderPrograms();
98 }
BlamGLSLShader::GetID
std::string GetID()
Definition: BlamGLSLShader.cpp:43
Blam::Rendering::OpenGL::CleanupShaders
BLAM void CleanupShaders()
Definition: shaders.cpp:47
Blam::Rendering::OpenGL::CleanupShaderPrograms
BLAM void CleanupShaderPrograms()
Definition: shaders.cpp:57
Blam::Rendering::OpenGL::LoadShaders
BLAM void LoadShaders()
Definition: shaders.cpp:10
Blam::Rendering::OpenGL::CompileShaders
BLAM void CompileShaders()
Definition: shaders.cpp:37
BlamGLSLShaderProgram::BlamGLSLShaderProgram
BlamGLSLShaderProgram(std::string _id)
Definition: BlamGLSLShaderProgram.cpp:5
BlamGLSLShaderProgram
Definition: shaders.h:47
BlamGLSLShaderAttributeType::FloatAttribute
@ FloatAttribute
Blam::Rendering::OpenGL::GetShaders
BLAM std::map< std::string, BlamGLSLShader * > * GetShaders()
Definition: shaders.cpp:140
BlamGLSLShaderProgram::RegisterUniform
void RegisterUniform(std::string name, BlamShaderUniformType type)
Definition: BlamGLSLShaderProgram.cpp:67
BlamGLSLShader::GetGLShaderID
GLuint GetGLShaderID()
Definition: BlamGLSLShader.cpp:77
BlamGLSLShaderProgram::GetLinkedShaders
std::vector< std::string > * GetLinkedShaders()
Definition: BlamGLSLShaderProgram.cpp:149
BlamShaderUniformType
BlamShaderUniformType
Definition: uniforms.h:11
BlamGLSLShaderProgram::UpdateUniforms
void UpdateUniforms()
Definition: BlamGLSLShaderProgram.cpp:106
BlamShaderUniform1F
Definition: uniforms.h:48
BlamGLSLShader::~BlamGLSLShader
~BlamGLSLShader()
Definition: BlamGLSLShader.cpp:37
Blam::Rendering::OpenGL::GetShader
BLAM BlamGLSLShader * GetShader(std::string id)
Definition: shaders.cpp:120
rendering.h
Blam::Rendering::OpenGL::LoadShaderPrograms
BLAM void LoadShaderPrograms()
Definition: shaders.cpp:21
BlamGLSLShaderProgram::~BlamGLSLShaderProgram
~BlamGLSLShaderProgram()
Definition: BlamGLSLShaderProgram.cpp:13
Blam::Rendering::OpenGL
Definition: opengl.h:10
Blam::Rendering::OpenGL::GetShaderPrograms
BLAM std::map< std::string, BlamGLSLShaderProgram * > * GetShaderPrograms()
Definition: shaders.cpp:145
BLAM
#define BLAM
Definition: shaders.h:10
BlamGLSLShader::Compile
bool Compile()
Definition: BlamGLSLShader.cpp:48
Blam::Rendering::OpenGL::UpdateAllShaderUniforms
BLAM void UpdateAllShaderUniforms(bool quiet)
Definition: shaders.cpp:100
BlamGLSLShaderType
BlamGLSLShaderType
Definition: shaders.h:18
BlamGLSLShaderProgram::GetUniforms
std::vector< BlamGLSLShaderUniform * > * GetUniforms()
Definition: BlamGLSLShaderProgram.cpp:154
BlamGLSLShaderProgram::GetUniform1F
BlamShaderUniform1F * GetUniform1F(std::string name)
Definition: BlamGLSLShaderProgram.cpp:129
BlamGLSLShader::BlamGLSLShader
BlamGLSLShader(std::string _id, BlamGLSLShaderType _type, std::string _source)
Definition: BlamGLSLShader.cpp:5
BlamGLSLShaderProgram::UpdateUniform
void UpdateUniform(std::string name)
Definition: BlamGLSLShaderProgram.cpp:95
BlamGLSLShader
Definition: shaders.h:25
Blam::Rendering::OpenGL::GetShaderProgram
BLAM BlamGLSLShaderProgram * GetShaderProgram(std::string id)
Definition: shaders.cpp:130
BlamGLSLShaderProgram::LinkProgram
void LinkProgram()
Definition: BlamGLSLShaderProgram.cpp:119
BlamGLSLShaderProgram::UseProgram
void UseProgram()
Definition: BlamGLSLShaderProgram.cpp:124
Blam::Rendering::OpenGL::PrepareProgramUniforms
BLAM void PrepareProgramUniforms()
Definition: shaders.cpp:90
BlamGLSLShaderType::VertexShader
@ VertexShader
BlamGLSLShaderAttributeType
BlamGLSLShaderAttributeType
Definition: shaders.h:13
Blam::Rendering::OpenGL::LinkAllShaderPrograms
BLAM void LinkAllShaderPrograms()
Definition: shaders.cpp:76
BlamGLSLShaderProgram::GetGLProgramID
GLuint GetGLProgramID()
Definition: BlamGLSLShaderProgram.cpp:114
BlamGLSLShaderProgram::AttachShader
void AttachShader(std::string shader_id)
Definition: BlamGLSLShaderProgram.cpp:46
BlamGLSLShaderProgram::GetID
std::string GetID()
Definition: BlamGLSLShaderProgram.cpp:41
BlamGLSLShaderType::__NULL_SHADER_TYPE
@ __NULL_SHADER_TYPE
BlamGLSLShaderType::FragmentShader
@ FragmentShader
uniforms.h
Blam::Rendering::OpenGL::LinkShaderProgram
BLAM void LinkShaderProgram(std::string id)
Definition: shaders.cpp:67
BlamGLSLShaderProgram::PrepareUniforms
void PrepareUniforms()
Definition: BlamGLSLShaderProgram.cpp:82