+ using Position = glm::vec3;
+ using Color = glm::vec3;
+ using Normal = glm::vec3;
+ using Index = unsigned int;
+
+ using Positions = std::vector<Position>;
+ using Colors = std::vector<Color>;
+ using Normals = std::vector<Normal>;
+ using Indices = std::vector<Index>;
+
+public:
+ Positions vertices;
+ Colors colors;
+ Normals normals;
+ Indices indices;
+
+public:
+ Model();
+ ~Model();
+
+ Model(const Model &) = delete;
+ Model &operator =(const Model &) = delete;
+
+ Model(Model &&);
+ Model &operator =(Model &&);
+
+ void Invalidate() { dirty = true; }
+
+ void Clear();
+ void Reserve(int vtx_count, int idx_count);
+
+ void CheckUpdate();
+ void Draw();
+
+private:
+ void Update();
+
+private: