// // Created by selim on 31.05.15. // #ifndef GLTEST_GLOBJECT_H #define GLTEST_GLOBJECT_H #include "IGLObject.h" #include "../Shaders/ShaderProgram.h" #include "vertex.h" #include #include class GLObject: public IGLObject { private: GLuint _vertexVbo; GLuint _indexVbo; GLuint _vao; glm::mat4 _worldMatrix; ShaderProgram* _sp; GLuint _trianglesCount; public: GLObject(ShaderProgram *shaderProgram); virtual ~GLObject(); void create() override final; void rotate(glm::vec3 angles) override final; void scale(glm::vec3 scaleFactor) override final; void translate(glm::vec3 point) override final; void draw() override final; void update(); protected: virtual std::tuple generateVertices() const = 0; virtual std::tuple generateIndices() const = 0; }; #endif //GLTEST_GLOBJECT_H