X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmodel.hpp;h=4423cd7115338f671847d2461def60ffd11454cd;hb=b35ce3a6423c554b34b37362c5550bd705e63a1d;hp=1e9dab9d1cde0132c30c1cdad9d656c3e5a47a7a;hpb=482114e156e91729f2529ea6bb1fe98dacdee97f;p=blank.git diff --git a/src/model.hpp b/src/model.hpp index 1e9dab9..4423cd7 100644 --- a/src/model.hpp +++ b/src/model.hpp @@ -22,6 +22,9 @@ public: Model(const Model &) = delete; Model &operator =(const Model &) = delete; + Model(Model &&); + Model &operator =(Model &&); + void Invalidate() { dirty = true; } void Clear(); @@ -45,6 +48,42 @@ private: }; + +class OutlineModel { + +public: + std::vector vertices; + std::vector colors; + +public: + OutlineModel(); + ~OutlineModel(); + + OutlineModel(const OutlineModel &) = delete; + OutlineModel &operator =(const OutlineModel &) = delete; + + void Invalidate() { dirty = true; } + + void Clear(); + void Reserve(int); + + void Draw(); + +private: + void Update(); + +private: + enum Attribute { + ATTRIB_VERTEX, + ATTRIB_COLOR, + ATTRIB_COUNT, + }; + + GLuint handle[ATTRIB_COUNT]; + bool dirty; + +}; + } #endif