X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmodel.hpp;h=1e9dab9d1cde0132c30c1cdad9d656c3e5a47a7a;hb=482114e156e91729f2529ea6bb1fe98dacdee97f;hp=02ab3f274bd5b096205f9c1d4a153bff004e7c4a;hpb=32a385382b73072438c99b533686a4bb9ba4742c;p=blank.git diff --git a/src/model.hpp b/src/model.hpp index 02ab3f2..1e9dab9 100644 --- a/src/model.hpp +++ b/src/model.hpp @@ -11,27 +11,37 @@ namespace blank { class Model { public: - enum Attribute { - ATTRIB_VERTEX, - ATTRIB_COLOR, - ATTRIB_NORMAL, - ATTRIB_COUNT, - }; + std::vector vertices; + std::vector colors; + std::vector normals; public: - explicit Model( - std::vector &&vertices, - std::vector &&colors, - std::vector &&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 vertices; - std::vector colors; - std::vector normals; + void Update(); + +private: + enum Attribute { + ATTRIB_VERTEX, + ATTRIB_COLOR, + ATTRIB_NORMAL, + ATTRIB_COUNT, + }; + GLuint handle[ATTRIB_COUNT]; + bool dirty; };