Files
Tower-Defense/include/render/VertexCache.h
2021-12-08 15:34:20 +01:00

39 lines
847 B
C++

#include <unordered_map>
#include <cstdint>
#include <memory>
#include "render/loader/GLLoader.h"
namespace td {
namespace render {
class VertexCache {
typedef std::vector<float> Vector;
struct DataIndex {
Vector position;
Vector color;
};
private:
std::size_t m_VertexCount;
std::unordered_map<std::uint64_t, DataIndex> m_Indexes;
std::unique_ptr<GL::VertexArray> m_VertexArray;
public:
VertexCache() : m_VertexCount(0) {}
void addData(std::uint64_t index, std::vector<float> positions, std::vector<float> colors);
void removeData(std::uint64_t index);
void clear();
void updateVertexArray();
const GL::VertexArray& getVertexArray() const { return *m_VertexArray; }
bool isEmpty() const { return m_VertexArray == nullptr; }
};
} // namespace render
} // namespace td