// // shader.cpp // graphics // // Created by Sam Jaffe on 7/5/16. // #include "game/graphics/shader.hpp" #include #include "game/util/hash.hpp" #include "helper.hpp" using namespace graphics; namespace { using key_t = std::pair; std::unordered_map> g_shaders; } flyweight shader::create(shaders::type tp, std::string const & path) { auto key = std::make_pair(tp, path); auto found = g_shaders.find(key); if (found != g_shaders.end()) { return found->second; } auto id = shaders::init(tp, path); flyweight fly{id, {id, tp, path}}; return g_shaders.emplace(key, fly).first->second; } shader::shader(unsigned int id, shaders::type type, std::string const & path) : identity(id), type(type), path(path) {}