dungeon_crawler

annotate prototype/src/renderer.h @ 74:5981917093ff

color grading palette output done, all is left is the input
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 21 Oct 2012 15:56:47 +0300
parents a27528035e20
children
rev   line source
nuclear@15 1 #ifndef RENDERER_H_
nuclear@15 2 #define RENDERER_H_
nuclear@15 3
nuclear@72 4 #include "colgrade.h"
nuclear@72 5
nuclear@23 6 class Level;
nuclear@23 7
nuclear@41 8 class Renderer {
nuclear@41 9 protected:
nuclear@72 10 // render target
nuclear@72 11 unsigned int fbo;
nuclear@72 12 unsigned int rend_tex, rend_depth;
nuclear@41 13 int width, height;
nuclear@72 14 int tex_xsz, tex_ysz;
nuclear@72 15
nuclear@72 16 GradePalette gradepal;
nuclear@72 17 unsigned int post_sdr;
nuclear@72 18
nuclear@72 19 virtual bool create_rtarg();
nuclear@15 20
nuclear@41 21 public:
nuclear@41 22 Renderer();
nuclear@41 23 virtual ~Renderer();
nuclear@33 24
nuclear@41 25 virtual bool init(int xsz, int ysz);
nuclear@23 26
nuclear@41 27 virtual int get_tangent_location() const;
nuclear@41 28 virtual unsigned int get_current_program() const;
nuclear@41 29
nuclear@41 30 virtual void resize(int xsz, int ysz);
nuclear@41 31
nuclear@62 32 virtual void render_pre(const Level *level) const;
nuclear@41 33 virtual void render(const Level *level) const = 0;
nuclear@62 34 virtual void render_post(const Level *level) const;
nuclear@74 35
nuclear@74 36 virtual GradePalette *get_grade_palette();
nuclear@74 37 virtual const GradePalette *get_grade_palette() const;
nuclear@41 38 };
nuclear@41 39
nuclear@41 40
nuclear@41 41 class FwdRenderer : public Renderer {
nuclear@41 42 protected:
nuclear@41 43 unsigned int sdrprog;
nuclear@41 44 int tang_attr;
nuclear@41 45
nuclear@41 46 public:
nuclear@41 47 FwdRenderer();
nuclear@41 48 ~FwdRenderer();
nuclear@41 49
nuclear@41 50 bool init(int xsz, int ysz);
nuclear@41 51
nuclear@41 52 int get_tangent_location() const;
nuclear@41 53 unsigned int get_current_program() const;
nuclear@41 54
nuclear@41 55 void render(const Level *level) const;
nuclear@41 56 };
nuclear@41 57
nuclear@41 58
nuclear@41 59 extern Renderer *rend;
nuclear@41 60
nuclear@15 61
nuclear@15 62 #endif // RENDERER_H_