#ifndef OPENGLGRAPHICS_H
#define OPENGLGRAPHICS_H

#include <string>
#include <epoxy/gl.h>
#include <opengl-playground/openglshader.hpp>
#include <glm/glm.hpp>
#include <memory>

class OpenGlGraphics
{
	public:
		OpenGlGraphics(std::shared_ptr<OpenGlShaderProgram> shader_prog);
		~OpenGlGraphics();
		virtual void realize() = 0;
		virtual void render() = 0;
		void setModelMatrix(const glm::mat4 &model_matrix);
		glm::mat4 getModelMatrix();
	protected:
		std::shared_ptr<OpenGlShaderProgram> shaderprog;
		glm::mat4 model_matrix;
};

#endif // OPENGLGRAPHICS_H
