6ea7c02252837bd7fe2a36f1b02f81cfb954d8fa
[demo] / src / renderer.h
1 #ifndef RENDERER_H_
2 #define RENDERER_H_
3
4 /*
5         this might change:
6         atm we are going to have 1 renderer per scene and 1 shader program
7         for the scene
8  */
9 class Camera;
10 class Scene;
11 class ShaderProgram;
12 class Object;
13
14 class Renderer {
15 protected:
16         ShaderProgram *sprog;
17         virtual void draw_object(Object *object) const = 0;
18
19 public:
20         Scene *scene;
21         Camera *camera;
22
23         Renderer();
24         Renderer(ShaderProgram *sprog, Scene *scene, Camera *camera);
25         virtual ~Renderer();
26
27         /* for the moment each Renderer creates and destroys the ShaderProgram
28         because we are using only a couple of shaders, in the future we might need a shader
29         manager that stores the shaders and replace these functions with something like:
30         void set_shader_program(ShaderProgram *sprog) */
31         virtual bool init_shaders(const char *vfname, const char *ffname) = 0;
32         virtual void destroy_shaders() = 0;
33
34         virtual void draw() const = 0;
35 };
36
37 #endif // RENDERER_H_