39 lines
847 B
C++
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
|