#ifndef FORWARDMODULE_H #define FORWARDMODULE_H #include "module.h" #include #include #include #include "shadersource.h" #include "material.h" #include "framebuffer.h" class Light; class Scene; class PhongEntity; class ForwardModule : public Module { public: ForwardModule() : shaderSources(NULL), renderTarget(FrameBuffer::screen) {} virtual void renderGL(Camera* myCamera, Scene* scene); virtual bool requiresModernOpenGL() {return true;} // write some compatibility code to change that to false // modern opengl methods void setShaderSource(ShaderSource* source); void compileShaders(Scene* scene); void setRenderTarget(FrameBuffer* target); private: static const char* const flagStr[NB_FLAGS]; ShaderSource* shaderSources; std::vector shaders; std::vector geometryFlagList; std::vector lightFlagList; const FrameBuffer* renderTarget; void lightPass(Camera* myCamera, Scene* scene, Light* light); }; #endif // FORWARDMODULE_H