#pragma once #include #include #include "device.hpp" #include "mesh.hpp" namespace sophia { class MeshPool { public: explicit MeshPool(Device& device); ~MeshPool(); MeshPool(const MeshPool&) = delete; MeshPool& operator=(const MeshPool&) = delete; MeshHandle create(const Mesh::Builder& builder); const Mesh& get(MeshHandle handle) const; void release(MeshHandle handle); private: struct Slot { std::unique_ptr mesh; u32 generation = 0; }; Device& device; std::vector slots; std::vector freeList; }; } // namespace sophia