2b683d6def8d723c80dc7bfaf220ee6536ce9ffa
[demo] / src / shader_manager.cc
1 #include <map>
2
3 #include "shader_manager.h"
4 #include "opengl/shader-gl.h"
5
6 extern bool use_vulkan;
7
8 ShaderManager::ShaderManager() {}
9 ShaderManager::~ShaderManager() {}
10
11 void ShaderManager::add_shader(Shader *sdr, const char *name)
12 {
13         shaders[name] = sdr;
14 }
15
16 Shader *ShaderManager::load_shader(const char *name, SType type)
17 {
18         std::map<std::string, Shader*>::const_iterator it;
19         it = shaders.find(name);
20
21         if(it != shaders.end()) {
22                 return it->second;
23         }
24
25         Shader* sdr;
26         if(use_vulkan) {
27         //      sdr = new ShaderVK;
28         }
29         else {
30                 sdr = new ShaderGL;
31         }
32
33         if(!sdr->load(name, type)) {
34                 delete sdr;
35                 return 0;
36         }
37
38         add_shader(sdr, name);
39         return sdr;
40 }
41
42 void ShaderManager::delete_shaders()
43 {
44         std::map<std::string, Shader *>::iterator it;
45         for(it=shaders.begin(); it != shaders.end(); it++) {
46                 delete it->second;
47         }
48 }