X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Frenderer.h;fp=src%2Frenderer.h;h=6ea7c02252837bd7fe2a36f1b02f81cfb954d8fa;hb=0da7a98f74d00bfa6cf0d47fd7cf0f687eeba5f6;hp=0000000000000000000000000000000000000000;hpb=826b0cf7adaf8b1dc4c37f57a4a98c79a3995e21;p=demo diff --git a/src/renderer.h b/src/renderer.h new file mode 100644 index 0000000..6ea7c02 --- /dev/null +++ b/src/renderer.h @@ -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