// // helper.hpp // graphics // // Created by Sam Jaffe on 5/18/19. // Copyright © 2019 Sam Jaffe. All rights reserved. // #pragma once #include #include #include "game/math/math_fwd.hpp" template class flyweight; namespace graphics { class shader; class shader_program; struct uniform; namespace textures { enum class format { RGB, RGBA }; unsigned int init(format, math::vec2i, void const *); } namespace shaders { enum class type : unsigned int { FRAGMENT, VERTEX }; unsigned int init(type, std::string const &); unsigned int init(flyweight const & fragmentShader, flyweight const & vertexShader); void activate(unsigned int id); int uniform_location(unsigned int id, std::string const & uniform); } namespace materials { void activate(flyweight program, std::vector const & uniforms); } } namespace std { template <> struct hash { std::size_t operator()(graphics::shaders::type tp) const { return std::hash()(static_cast(tp)); } }; }