#ifndef CLIENT_PROGRAM_HH #define CLIENT_PROGRAM_HH 1 #pragma once struct GL_VariedMacro final { std::string name; unsigned long line; unsigned int value; }; struct GL_Uniform final { std::string name; GLint location; }; class GL_Program final { public: bool setup(std::string_view vpath, std::string_view fpath); void destroy(void); bool update(void); std::size_t add_uniform(std::string_view name); void set_variant_vert(unsigned int variant, unsigned int value); void set_variant_frag(unsigned int variant, unsigned int value); public: std::string vert_path; std::string frag_path; std::vector vert_source; std::vector frag_source; std::vector vert_variants; std::vector frag_variants; std::vector uniforms; bool needs_update; GLuint handle; }; #endif // CLIENT_PROGRAM_HH