+ try
+ {
+ create_targets(0);
+ }
+ catch(...)
+ {
+ postproc.pop_back();
+ throw;
+ }
+}
+
+void Pipeline::setup_frame() const
+{
+ in_frame = true;
+ for(PassList::const_iterator i=passes.begin(); i!=passes.end(); ++i)
+ if(const Renderable *renderable = i->get_renderable())
+ renderable->setup_frame();
+ for(vector<Slot>::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
+ i->renderable->setup_frame();
+}
+
+void Pipeline::finish_frame() const
+{
+ in_frame = false;
+ for(PassList::const_iterator i=passes.begin(); i!=passes.end(); ++i)
+ if(const Renderable *renderable = i->get_renderable())
+ renderable->finish_frame();
+ for(vector<Slot>::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
+ i->renderable->finish_frame();