3 #include "shader_manager.h"
4 #include "opengl/shader-gl.h"
6 extern bool use_vulkan;
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()) {
27 // sdr = new ShaderVK;
33 std::string fname = path.empty() ? std::string(name) : path + "/" + std::string(name);
35 if(!sdr->load(fname.c_str(), type)) {
36 fprintf(stderr, "Failed to load shader: %s.\n", fname.c_str());
41 add_shader(sdr, name);
45 void ShaderManager::delete_shaders()
47 std::map<std::string, Shader *>::iterator it;
48 for(it=shaders.begin(); it != shaders.end(); it++) {
53 ShaderProgram *ShaderManager::create_shader_program(const char *vname, const char *fname)
55 path = use_vulkan ? "vk_shaders" : "gl_shaders";
57 Shader *vsdr = load_shader(vname, SDR_VERTEX);
61 Shader *fsdr = load_shader(fname, SDR_FRAGMENT);
72 sprog = new ShaderProgramGL;
75 if(!sprog->create()) {
79 sprog->attach_shader(vsdr);
80 sprog->attach_shader(fsdr);
90 void ShaderManager::set_path(const char *path)
95 this->path = std::string(path);