5 #include "shader_manager.h"
6 #include "opengl/shader-gl.h"
8 ShaderManager::ShaderManager() {}
9 ShaderManager::~ShaderManager() {}
11 void ShaderManager::add_shader(Shader *sdr, const char *name)
16 Shader *ShaderManager::load_shader(const char *name, SType type)
18 std::map<std::string, Shader *>::const_iterator it;
19 it = shaders.find(name);
21 if(it != shaders.end()) {
25 Shader *sdr = gfx_create_shader();
27 std::string fname = path.empty() ? std::string(name) : path + "/" + std::string(name);
29 if(!sdr->load(fname.c_str(), type)) {
34 add_shader(sdr, name);
38 void ShaderManager::delete_shaders()
40 std::map<std::string, Shader *>::iterator it;
41 for(it=shaders.begin(); it != shaders.end(); it++) {
46 ShaderProgram *ShaderManager::create_shader_program(const char *vname, const char *fname)
48 path = std::string(gfx_get_shader_path());
53 Shader *vsdr = load_shader(vname, SDR_VERTEX);
57 Shader *fsdr = load_shader(fname, SDR_FRAGMENT);
61 ShaderProgram *sprog = gfx_create_shader_program();
63 if(!sprog->create()) {
67 sprog->attach_shader(vsdr);
68 sprog->attach_shader(fsdr);
78 void ShaderManager::set_path(const char *path)
83 this->path = std::string(path);