+}
+
+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;
+
+ Shader *fsdr = load_shader(fname, SDR_FRAGMENT);
+ if(!fsdr)
+ return 0;
+
+ ShaderProgram *sprog = gfx_create_shader_program();
+
+ if(!sprog->create()) {
+ return 0;
+ }
+
+ sprog->attach_shader(vsdr);
+ sprog->attach_shader(fsdr);
+
+ if(!sprog->link()) {
+ delete sprog;
+ return 0;
+ }
+
+ return sprog;
+}
+
+void ShaderManager::set_path(const char *path)
+{
+ if(!path)
+ this->path.clear();
+ else
+ this->path = std::string(path);
+}