X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Fshader_manager.cc;h=7ebbce62dcb919c0d371172a7be9d7ce3fd99d14;hb=3bf3536271e4afa8a8a93c75e2ab1256c0bf718a;hp=929d57abbe69258a18aef581f3dfe6a21daecca4;hpb=fcd6773bc770425ede4b47a84eef7cc78342542c;p=demo diff --git a/src/shader_manager.cc b/src/shader_manager.cc index 929d57a..7ebbce6 100644 --- a/src/shader_manager.cc +++ b/src/shader_manager.cc @@ -1,10 +1,10 @@ #include +#include "gfxapi.h" + #include "shader_manager.h" #include "opengl/shader-gl.h" -extern bool use_vulkan; - ShaderManager::ShaderManager() {} ShaderManager::~ShaderManager() {} @@ -22,17 +22,12 @@ Shader *ShaderManager::load_shader(const char *name, SType type) return it->second; } - Shader *sdr; - if(use_vulkan) { - // sdr = new ShaderVK; - } - else { - sdr = new ShaderGL; - } + Shader *sdr = gfx_create_shader(); std::string fname = path.empty() ? std::string(name) : path + "/" + std::string(name); if(!sdr->load(fname.c_str(), type)) { + fprintf(stderr, "Failed to load shader: %s.\n", fname.c_str()); delete sdr; return 0; } @@ -51,6 +46,8 @@ void ShaderManager::delete_shaders() ShaderProgram *ShaderManager::create_shader_program(const char *vname, const char *fname) { + path = std::string(gfx_get_shader_path()); + Shader *vsdr = load_shader(vname, SDR_VERTEX); if(!vsdr) return 0; @@ -59,19 +56,15 @@ ShaderProgram *ShaderManager::create_shader_program(const char *vname, const cha if(!fsdr) return 0; - ShaderProgram *sprog; + ShaderProgram *sprog = gfx_create_shader_program(); - if(use_vulkan) { - // TODO + if(!sprog->create()) { return 0; } - else { - sprog = new ShaderProgramGL; - } sprog->attach_shader(vsdr); sprog->attach_shader(fsdr); - + if(!sprog->link()) { delete sprog; return 0;