36 lines
602 B
C++
36 lines
602 B
C++
#pragma once
|
|
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
#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> mesh;
|
|
u32 generation = 0;
|
|
};
|
|
|
|
Device& device;
|
|
|
|
std::vector<Slot> slots;
|
|
std::vector<u32> freeList;
|
|
};
|
|
|
|
} // namespace sophia
|