graphics api abstraction
[demo] / src / shader_manager.cc
index 87c0451..7ebbce6 100644 (file)
@@ -1,10 +1,10 @@
 #include <map>
 
+#include "gfxapi.h"
+
 #include "shader_manager.h"
 #include "opengl/shader-gl.h"
 
-extern bool use_vulkan;
-
 ShaderManager::ShaderManager() {}
 ShaderManager::~ShaderManager() {}
 
@@ -22,13 +22,7 @@ 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);
 
@@ -52,7 +46,7 @@ void ShaderManager::delete_shaders()
 
 ShaderProgram *ShaderManager::create_shader_program(const char *vname, const char *fname)
 {
-       path = use_vulkan ? "vk_shaders" : "gl_shaders";
+       path = std::string(gfx_get_shader_path());
 
        Shader *vsdr = load_shader(vname, SDR_VERTEX);
        if(!vsdr)
@@ -62,15 +56,7 @@ ShaderProgram *ShaderManager::create_shader_program(const char *vname, const cha
        if(!fsdr)
                return 0;
 
-       ShaderProgram *sprog;
-
-       if(use_vulkan) {
-               // TODO
-               return 0;
-       }
-       else {
-               sprog = new ShaderProgramGL;
-       }
+       ShaderProgram *sprog = gfx_create_shader_program();
 
        if(!sprog->create()) {
                return 0;