#include <map>
+#include "gfxapi.h"
+
#include "shader_manager.h"
#include "opengl/shader-gl.h"
-extern bool use_vulkan;
-
ShaderManager::ShaderManager() {}
ShaderManager::~ShaderManager() {}
shaders[name] = sdr;
}
-Shader *ShaderManager::load_shader(const char *name, SType type)
+Shader *ShaderManager::load_shader(const char *name, ShaderType type)
{
std::map<std::string, Shader *>::const_iterator it;
it = shaders.find(name);
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);
ShaderProgram *ShaderManager::create_shader_program(const char *vname, const char *fname)
{
+ path = std::string(gfx_get_shader_path());
+
+ if(!vname || !fname)
+ return 0;
+
Shader *vsdr = load_shader(vname, SDR_VERTEX);
if(!vsdr)
return 0;
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;
this->path.clear();
else
this->path = std::string(path);
-}
\ No newline at end of file
+}