#pragma once namespace zgl { class buffer_manager { public: using store_type = dynamic_texture_store; using store_id_type = store_type::id_type; using resource_manager_type = resource_manager; using resource_type = resource_manager_type::resource_handle; using handle_type = texture_handle; static constexpr std::size_t min_garbage_collection_count = 4; void process(store_type& store); std::optional get_handle(store_id_type id); void collect_garbage(bool force = false); private: resource_manager m_resource_manager; std::vector> m_texture_buffer; std::vector m_texture_id_buffer; }; }