#pragma once #include "shaders/program_pool.hpp" #include "shaders/program_params.hpp" #include "drape/drape_global.hpp" #include "drape/gpu_program.hpp" #include "drape/pointers.hpp" #include "base/macros.hpp" #include #include namespace gpu { class ProgramManager { public: ProgramManager() = default; void Init(dp::ApiVersion apiVersion); ref_ptr GetProgram(Program program); ref_ptr GetParamsSetter() const; private: using Programs = std::array, static_cast(Program::ProgramsCount)>; Programs m_programs; drape_ptr m_pool; drape_ptr m_paramsSetter; DISALLOW_COPY_AND_MOVE(ProgramManager); }; } // namespace gpu