]> git.localhorst.tv Git - blank.git/blob - src/model.hpp
1e9dab9d1cde0132c30c1cdad9d656c3e5a47a7a
[blank.git] / src / model.hpp
1 #ifndef BLANK_MODEL_HPP_
2 #define BLANK_MODEL_HPP_
3
4 #include <vector>
5 #include <GL/glew.h>
6 #include <glm/glm.hpp>
7
8
9 namespace blank {
10
11 class Model {
12
13 public:
14         std::vector<glm::vec3> vertices;
15         std::vector<glm::vec3> colors;
16         std::vector<glm::vec3> normals;
17
18 public:
19         Model();
20         ~Model();
21
22         Model(const Model &) = delete;
23         Model &operator =(const Model &) = delete;
24
25         void Invalidate() { dirty = true; }
26
27         void Clear();
28         void Reserve(int);
29
30         void Draw();
31
32 private:
33         void Update();
34
35 private:
36         enum Attribute {
37                 ATTRIB_VERTEX,
38                 ATTRIB_COLOR,
39                 ATTRIB_NORMAL,
40                 ATTRIB_COUNT,
41         };
42
43         GLuint handle[ATTRIB_COUNT];
44         bool dirty;
45
46 };
47
48 }
49
50 #endif