quick backup of the renderer - things missing
[demo] / src / renderer.h
diff --git a/src/renderer.h b/src/renderer.h
new file mode 100644 (file)
index 0000000..6ea7c02
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef RENDERER_H_
+#define RENDERER_H_
+
+/*
+       this might change:
+       atm we are going to have 1 renderer per scene and 1 shader program
+       for the scene
+ */
+class Camera;
+class Scene;
+class ShaderProgram;
+class Object;
+
+class Renderer {
+protected:
+       ShaderProgram *sprog;
+       virtual void draw_object(Object *object) const = 0;
+
+public:
+       Scene *scene;
+       Camera *camera;
+
+       Renderer();
+       Renderer(ShaderProgram *sprog, Scene *scene, Camera *camera);
+       virtual ~Renderer();
+
+       /* for the moment each Renderer creates and destroys the ShaderProgram
+       because we are using only a couple of shaders, in the future we might need a shader
+       manager that stores the shaders and replace these functions with something like:
+       void set_shader_program(ShaderProgram *sprog) */
+       virtual bool init_shaders(const char *vfname, const char *ffname) = 0;
+       virtual void destroy_shaders() = 0;
+
+       virtual void draw() const = 0;
+};
+
+#endif // RENDERER_H_
\ No newline at end of file