]> git.localhorst.tv Git - blank.git/blobdiff - src/model.hpp
very basic chunk model
[blank.git] / src / model.hpp
index 02ab3f274bd5b096205f9c1d4a153bff004e7c4a..1e9dab9d1cde0132c30c1cdad9d656c3e5a47a7a 100644 (file)
@@ -11,27 +11,37 @@ namespace blank {
 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;
 
 };