#ifndef BLANK_MODEL_HPP_
#define BLANK_MODEL_HPP_
+#include <vector>
+#include <GL/glew.h>
#include <glm/glm.hpp>
class Model {
public:
- Model();
- ~Model();
-
- glm::mat4 Transform() const;
+ enum Attribute {
+ ATTRIB_VERTEX,
+ ATTRIB_COLOR,
+ ATTRIB_NORMAL,
+ ATTRIB_COUNT,
+ };
- void Position(glm::vec3 pos) { position = pos; }
- void Move(glm::vec3 delta) { position += delta; }
+public:
+ explicit Model(
+ std::vector<glm::vec3> &&vertices,
+ std::vector<glm::vec3> &&colors,
+ std::vector<glm::vec3> &&normals);
+ ~Model();
- // all angles in radians (full circle = 2π)
- void Pitch(float p) { pitch = p; }
- void RotatePitch(float delta) { pitch += delta; }
- void Yaw(float y) { yaw = y; }
- void RotateYaw(float delta) { yaw += delta; }
+ void Draw();
private:
- glm::vec3 position;
- float pitch;
- float yaw;
+ std::vector<glm::vec3> vertices;
+ std::vector<glm::vec3> colors;
+ std::vector<glm::vec3> normals;
+ GLuint handle[ATTRIB_COUNT];
};