nuclear@41: #ifndef RENDERER_DEFERRED_H_ nuclear@41: #define RENDERER_DEFERRED_H_ nuclear@41: nuclear@41: #include "renderer.h" nuclear@41: nuclear@41: #define MRT_COUNT 3 nuclear@41: nuclear@41: class DeferredRenderer : public Renderer { nuclear@60: protected: nuclear@41: unsigned int fbo, rbuf_depth; nuclear@41: unsigned int mrt_tex[MRT_COUNT]; nuclear@41: int tex_xsz, tex_ysz; nuclear@41: nuclear@41: unsigned int mrt_prog; nuclear@41: unsigned int deferred_omni, deferred_debug; nuclear@41: nuclear@41: mutable unsigned int curr_prog; nuclear@41: nuclear@60: int num_draw_bufs; nuclear@60: nuclear@60: virtual bool create_fbo(); nuclear@41: nuclear@41: public: nuclear@41: DeferredRenderer(); nuclear@60: virtual ~DeferredRenderer(); nuclear@41: nuclear@60: virtual bool init(int xsz, int ysz); nuclear@41: nuclear@60: virtual int get_tangent_location() const; nuclear@60: virtual unsigned int get_current_program() const; nuclear@41: nuclear@60: virtual void resize(int xsz, int ysz); nuclear@41: nuclear@60: virtual void render(const Level *level) const; nuclear@60: nuclear@60: virtual void light_pass(const Level *level) const; nuclear@41: }; nuclear@41: nuclear@41: #endif // RENDERER_DEFERRED_H_