class Model {
public:
- std::vector<glm::vec3> vertices;
- std::vector<glm::vec3> colors;
- std::vector<glm::vec3> normals;
+ 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:
+ Positions vertices;
+ Colors colors;
+ Normals normals;
+ Indices indices;
public:
Model();
void Invalidate() { dirty = true; }
void Clear();
- void Reserve(int);
+ void Reserve(int vtx_count, int idx_count);
+ void CheckUpdate();
void Draw();
private:
ATTRIB_VERTEX,
ATTRIB_COLOR,
ATTRIB_NORMAL,
+ ATTRIB_INDEX,
ATTRIB_COUNT,
};
+ GLuint va;
GLuint handle[ATTRIB_COUNT];
bool dirty;
class OutlineModel {
public:
- std::vector<glm::vec3> vertices;
- std::vector<glm::vec3> colors;
+ 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:
+ Positions vertices;
+ Colors colors;
+ Indices indices;
public:
OutlineModel();
void Invalidate() { dirty = true; }
void Clear();
- void Reserve(int);
+ void Reserve(int vtx_count, int idx_count);
void Draw();
enum Attribute {
ATTRIB_VERTEX,
ATTRIB_COLOR,
+ ATTRIB_INDEX,
ATTRIB_COUNT,
};
+ GLuint va;
GLuint handle[ATTRIB_COUNT];
bool dirty;