Files
Tower-Defense/include/render/VertexCache.h
2023-01-02 13:05:43 +01:00

39 lines
796 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