X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpipeline.cpp;h=9e2976ab69e5dc4e383c413be18c9239ac786a94;hb=6109322ffc5dec1a777807fcbefacafe94d1d5eb;hp=ce9c8f689a0feecd55214590f2dff25c3851850a;hpb=d031a80ea06e3ccd01041e9c6024fa62adf25160;p=libs%2Fgl.git diff --git a/source/pipeline.cpp b/source/pipeline.cpp index ce9c8f68..9e2976ab 100644 --- a/source/pipeline.cpp +++ b/source/pipeline.cpp @@ -9,20 +9,32 @@ #include "renderer.h" #include "tests.h" #include "texture2d.h" +#include "view.h" using namespace std; namespace Msp { namespace GL { -Pipeline::Pipeline(unsigned w, unsigned h, bool d): - camera(0), - width(w), - height(h), - hdr(d), - samples(0), - target_ms(0) +Pipeline::Pipeline(unsigned w, unsigned h, bool d) { + init(w, h); + hdr = d; +} + +Pipeline::Pipeline(const View &view) +{ + init(view.get_width(), view.get_height()); +} + +void Pipeline::init(unsigned w, unsigned h) +{ + camera = 0; + width = w; + height = h; + hdr = false; + samples = 0; + target_ms = 0; target[0] = 0; target[1] = 0; } @@ -136,28 +148,28 @@ void Pipeline::add_postprocessor(PostProcessor &pp) } } -void Pipeline::setup_frame() const +void Pipeline::setup_frame(Renderer &renderer) { for(PassList::const_iterator i=passes.begin(); i!=passes.end(); ++i) - if(const Renderable *renderable = i->get_renderable()) - renderable->setup_frame(); + if(Renderable *renderable = i->get_renderable()) + renderable->setup_frame(renderer); for(vector::const_iterator i=renderables.begin(); i!=renderables.end(); ++i) - i->renderable->setup_frame(); + i->renderable->setup_frame(renderer); } -void Pipeline::finish_frame() const +void Pipeline::finish_frame() { for(PassList::const_iterator i=passes.begin(); i!=passes.end(); ++i) - if(const Renderable *renderable = i->get_renderable()) + if(Renderable *renderable = i->get_renderable()) renderable->finish_frame(); for(vector::const_iterator i=renderables.begin(); i!=renderables.end(); ++i) i->renderable->finish_frame(); } -void Pipeline::render() const +void Pipeline::render() { Renderer renderer(camera); - setup_frame(); + setup_frame(renderer); render(renderer); finish_frame(); }