class Model {
public:
- enum Attribute {
- ATTRIB_VERTEX,
- ATTRIB_COLOR,
- ATTRIB_NORMAL,
- ATTRIB_COUNT,
- };
+ std::vector<glm::vec3> vertices;
+ std::vector<glm::vec3> colors;
+ std::vector<glm::vec3> normals;
public:
- explicit Model(
- std::vector<glm::vec3> &&vertices,
- std::vector<glm::vec3> &&colors,
- std::vector<glm::vec3> &&normals);
+ Model();
~Model();
+ Model(const Model &) = delete;
+ Model &operator =(const Model &) = delete;
+
+ void Invalidate() { dirty = true; }
+
+ void Clear();
+ void Reserve(int);
+
void Draw();
private:
- std::vector<glm::vec3> vertices;
- std::vector<glm::vec3> colors;
- std::vector<glm::vec3> normals;
+ void Update();
+
+private:
+ enum Attribute {
+ ATTRIB_VERTEX,
+ ATTRIB_COLOR,
+ ATTRIB_NORMAL,
+ ATTRIB_COUNT,
+ };
+
GLuint handle[ATTRIB_COUNT];
+ bool dirty;
};