#pragma once #include "shaders/program_pool.hpp" #include "drape/drape_global.hpp" #include "drape/shader.hpp" #include "drape/pointers.hpp" #include #include #include namespace gpu { class GLProgramPool : public ProgramPool { public: explicit GLProgramPool(dp::ApiVersion apiVersion); ~GLProgramPool() override; drape_ptr Get(Program program) override; void SetDefines(std::string const & defines); private: ref_ptr GetShader(std::string const & name, std::string const & source, dp::Shader::Type type); dp::ApiVersion const m_apiVersion; std::string m_baseDefines; using Shaders = std::map>; Shaders m_shaders; std::string m_defines; }; } // namespace gpu