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@65: // render targets nuclear@41: unsigned int mrt_tex[MRT_COUNT]; nuclear@41: nuclear@65: // shaders 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@72: virtual bool create_rtarg(); 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_