]> git.localhorst.tv Git - blank.git/blobdiff - src/model.hpp
devirtualize shape and outline calls
[blank.git] / src / model.hpp
index 6e9583b3ec84f6ae05c7f1beaeeaa05b7e36e75b..62f467c4f787a6de9547f450af12197dd3e955f6 100644 (file)
@@ -11,13 +11,21 @@ namespace blank {
 class Model {
 
 public:
+       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:
-       std::vector<glm::vec3> vertices;
-       std::vector<glm::vec3> colors;
-       std::vector<glm::vec3> normals;
-       std::vector<Index> indices;
+       Positions vertices;
+       Colors colors;
+       Normals normals;
+       Indices indices;
 
 public:
        Model();
@@ -34,6 +42,7 @@ public:
        void Clear();
        void Reserve(int vtx_count, int idx_count);
 
+       void CheckUpdate();
        void Draw();
 
 private:
@@ -48,6 +57,7 @@ private:
                ATTRIB_COUNT,
        };
 
+       GLuint va;
        GLuint handle[ATTRIB_COUNT];
        bool dirty;
 
@@ -57,12 +67,18 @@ private:
 class OutlineModel {
 
 public:
+       using Position = glm::vec3;
+       using Color = glm::vec3;
        using Index = unsigned short;
 
+       using Positions = std::vector<Position>;
+       using Colors = std::vector<Color>;
+       using Indices = std::vector<Index>;
+
 public:
-       std::vector<glm::vec3> vertices;
-       std::vector<glm::vec3> colors;
-       std::vector<Index> indices;
+       Positions vertices;
+       Colors colors;
+       Indices indices;
 
 public:
        OutlineModel();
@@ -89,6 +105,7 @@ private:
                ATTRIB_COUNT,
        };
 
+       GLuint va;
        GLuint handle[ATTRIB_COUNT];
        bool dirty;