]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/sequence.cpp
Move WindowView::render to the backend
[libs/gl.git] / source / render / sequence.cpp
index 4ccf540809d4a3138f4e30e3d23a0ca3e0e35370..2a5b351c888d2b7e3c609706061f8ae352301bda 100644 (file)
@@ -33,9 +33,8 @@ Sequence::Sequence(unsigned w, unsigned h, const FrameFormat &f):
 
 Sequence::~Sequence()
 {
-       for(PostProcStep &p: postproc)
-               if(p.owned)
-                       delete p.postproc;
+       for(OwnedObject &o: owned_data)
+               o.delete_func(o.pointer);
        delete target[0];
        delete target[1];
        delete target_ms;
@@ -71,24 +70,10 @@ Sequence::Step &Sequence::add_step(Tag tag, Renderable &r)
 }
 
 void Sequence::add_postprocessor(PostProcessor &pp)
-{
-       add_postprocessor(&pp, false);
-}
-
-void Sequence::add_postprocessor_owned(PostProcessor *pp)
-{
-       add_postprocessor(pp, true);
-}
-
-void Sequence::add_postprocessor(PostProcessor *pp, bool owned)
 {
        if(target_format.empty())
-       {
-               if(owned)
-                       delete pp;
                throw invalid_operation("Sequence::add_postprocessor");
-       }
-       postproc.push_back(PostProcStep(pp, owned));
+       postproc.push_back(&pp);
 }
 
 void Sequence::setup_frame(Renderer &renderer)
@@ -153,7 +138,7 @@ void Sequence::render(Renderer &renderer, Tag tag) const
                        renderer.add_shader_data(lighting->get_shader_data());
 
                if(const Renderable *renderable = s.get_renderable())
-                       renderer.render(*renderable, s.get_tag());
+                       renderable->render(renderer, s.get_tag());
        }
 
        if(target[0])
@@ -171,7 +156,7 @@ void Sequence::render(Renderer &renderer, Tag tag) const
                        renderer.set_framebuffer(i+1<postproc.size() ? &target[1-j]->get_framebuffer() : out_fbo);
                        const Texture2D &color = target[j]->get_target_texture(COLOR_ATTACHMENT);
                        const Texture2D &depth = target[j]->get_target_texture(DEPTH_ATTACHMENT);
-                       postproc[i].postproc->render(renderer, color, depth);
+                       postproc[i]->render(renderer, color, depth);
                }
        }
 }