X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmodel.hpp;h=ea9bf119e80e6061084117edb0e1c11549a8b1a0;hb=e70967c971f77a4ac0f5c074e6eb94bdd0e2b7ab;hp=4423cd7115338f671847d2461def60ffd11454cd;hpb=5700ea3c08ea5e4a5c743f0413b65dc8eebfd220;p=blank.git diff --git a/src/model.hpp b/src/model.hpp index 4423cd7..ea9bf11 100644 --- a/src/model.hpp +++ b/src/model.hpp @@ -10,10 +10,14 @@ namespace blank { class Model { +public: + using Index = unsigned int; + public: std::vector vertices; std::vector colors; std::vector normals; + std::vector indices; public: Model(); @@ -28,8 +32,9 @@ public: void Invalidate() { dirty = true; } void Clear(); - void Reserve(int); + void Reserve(int vtx_count, int idx_count); + void CheckUpdate(); void Draw(); private: @@ -40,9 +45,11 @@ private: ATTRIB_VERTEX, ATTRIB_COLOR, ATTRIB_NORMAL, + ATTRIB_INDEX, ATTRIB_COUNT, }; + GLuint va; GLuint handle[ATTRIB_COUNT]; bool dirty; @@ -51,9 +58,13 @@ private: class OutlineModel { +public: + using Index = unsigned short; + public: std::vector vertices; std::vector colors; + std::vector indices; public: OutlineModel(); @@ -65,7 +76,7 @@ public: void Invalidate() { dirty = true; } void Clear(); - void Reserve(int); + void Reserve(int vtx_count, int idx_count); void Draw(); @@ -76,9 +87,11 @@ private: enum Attribute { ATTRIB_VERTEX, ATTRIB_COLOR, + ATTRIB_INDEX, ATTRIB_COUNT, }; + GLuint va; GLuint handle[ATTRIB_COUNT]; bool dirty;