// // helper.hpp // graphics // // Created by Sam Jaffe on 5/18/19. // Copyright © 2019 Sam Jaffe. All rights reserved. // #pragma once #include #include #include "game/graphics/graphics_fwd.h" #include "game/math/math_fwd.hpp" namespace graphics { 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(identity const & fragmentShader, identity const & vertexShader); void activate(identity id); int uniform_location(identity id, std::string const & uniform); } namespace materials { enum class uniform : unsigned int { NORMAL, DIFFUSE, SPECULAR }; void activate(identity 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)); } }; template <> struct hash { std::size_t operator()(graphics::materials::uniform uf) const { return std::hash()(static_cast(uf)); } }; }