]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/sequence.cpp
Make clearing the render target a responsibility of Sequence
[libs/gl.git] / source / render / sequence.cpp
index 535e81859aa0dea0a8d403088abc8ae2ce819d6a..254a6c462abcbdc01aa232a104c05cf5380db269 100644 (file)
@@ -17,14 +17,16 @@ Sequence::Sequence():
        width(0),
        height(0),
        target{0, 0},
-       target_ms(0)
+       target_ms(0),
+       clear_enabled(false)
 { }
 
 Sequence::Sequence(unsigned w, unsigned h, const FrameFormat &f):
        width(w),
        height(h),
        target_format(f),
-       target_ms(0)
+       target_ms(0),
+       clear_enabled(false)
 {
        if(target_format.empty())
                throw invalid_argument("Sequence::Sequence");
@@ -48,6 +50,11 @@ Sequence::~Sequence()
        delete target_ms;
 }
 
+void Sequence::set_clear_enabled(bool c)
+{
+       clear_enabled = c;
+}
+
 Sequence::Step &Sequence::add_step(Tag tag, Renderable &r)
 {
        steps.push_back(Step(tag, &r));
@@ -99,10 +106,10 @@ void Sequence::render(Renderer &renderer, Tag tag) const
        const Framebuffer *out_fbo = renderer.get_framebuffer();
 
        if(target[0])
-       {
                renderer.set_framebuffer(&(target_ms ? target_ms : target[0])->get_framebuffer());
+
+       if(clear_enabled)
                renderer.clear();
-       }
 
        for(const Step &s: steps)
        {