]> git.tdb.fi Git - libs/gl.git/commitdiff
Change the setup/finish_frame interface to be non-const
authorMikko Rasa <tdb@tdb.fi>
Mon, 5 Dec 2016 17:04:30 +0000 (19:04 +0200)
committerMikko Rasa <tdb@tdb.fi>
Mon, 5 Dec 2016 17:50:13 +0000 (19:50 +0200)
There's no deprecated versions left behind because it would be impossible
to make it work with Renderables that forward the calls to a Scene.
Better to just get compile errors and fix them as I encounter them.

15 files changed:
source/effect.h
source/environmentmap.cpp
source/environmentmap.h
source/instancescene.cpp
source/instancescene.h
source/orderedscene.cpp
source/orderedscene.h
source/pipeline.cpp
source/pipeline.h
source/renderable.h
source/shadowmap.cpp
source/shadowmap.h
source/simplescene.cpp
source/simplescene.h
source/view.cpp

index 1211c3b5094dee3ba14c73aed6f258b39d0aabd8..4be963f653c686ac9a1688f2be8e13399645a341 100644 (file)
@@ -27,8 +27,8 @@ public:
 
        virtual const Matrix *get_matrix() const { return renderable.get_matrix(); }
 
-       virtual void setup_frame() const { renderable.setup_frame(); }
-       virtual void finish_frame() const { renderable.finish_frame(); }
+       virtual void setup_frame(Renderer &r) { renderable.setup_frame(r); }
+       virtual void finish_frame() { renderable.finish_frame(); }
 };
 
 } // namespace GL
index 1e6f639a3eb8f89bb1037b94f386fe8c59cfaf1d..cbb097eaa6370e3b944a73124639b9ca72d5d42c 100644 (file)
@@ -30,14 +30,14 @@ EnvironmentMap::EnvironmentMap(unsigned s, Renderable &r, Renderable &e):
 
 }
 
-void EnvironmentMap::setup_frame() const
+void EnvironmentMap::setup_frame(Renderer &renderer)
 {
        if(rendered)
                return;
 
        rendered = true;
-       renderable.setup_frame();
-       environment.setup_frame();
+       renderable.setup_frame(renderer);
+       environment.setup_frame(renderer);
 
        Renderer env_renderer(0);
        const Matrix *matrix = renderable.get_matrix();
@@ -58,7 +58,7 @@ void EnvironmentMap::setup_frame() const
        Framebuffer::unbind();
 }
 
-void EnvironmentMap::finish_frame() const
+void EnvironmentMap::finish_frame()
 {
        if(rendered)
        {
index 9c4c4d15df4b4c6d342805973df4368944688a96..006779462f5b93853e16c18ddf357caf06f7fff1 100644 (file)
@@ -31,16 +31,16 @@ private:
        Renderable &environment;
        TextureCube env_tex;
        Renderbuffer depth_buf;
-       mutable Framebuffer fbo[6];
-       mutable Camera camera;
+       Framebuffer fbo[6];
+       Camera camera;
        mutable ProgramData shdata;
-       mutable bool rendered;
+       bool rendered;
 
 public:
        EnvironmentMap(unsigned size, Renderable &rend, Renderable &env);
 
-       virtual void setup_frame() const;
-       virtual void finish_frame() const;
+       virtual void setup_frame(Renderer &);
+       virtual void finish_frame();
 
        virtual void render(Renderer &, const Tag &) const;
 };
index bbaf49ed29731da8a2f94ea9093ebea0b6745366..b533bae5fac75e843bf23604004e7169676a0513 100644 (file)
@@ -22,14 +22,14 @@ void InstanceScene::remove(Renderable &r)
        }
 }
 
-void InstanceScene::setup_frame() const
+void InstanceScene::setup_frame(Renderer &renderer)
 {
        for(InstanceMap::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
                for(RenderableSet::const_iterator j=i->second.begin(); j!=i->second.end(); ++j)
-                       (*j)->setup_frame();
+                       (*j)->setup_frame(renderer);
 }
 
-void InstanceScene::finish_frame() const
+void InstanceScene::finish_frame()
 {
        for(InstanceMap::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
                for(RenderableSet::const_iterator j=i->second.begin(); j!=i->second.end(); ++j)
index d23fbb1f4001043379f3bc564a7eab23796618b0..3f345124b47d5c086c48b81326f01230586212b3 100644 (file)
@@ -25,8 +25,8 @@ public:
        virtual void add(Renderable &);
        virtual void remove(Renderable &);
 
-       virtual void setup_frame() const;
-       virtual void finish_frame() const;
+       virtual void setup_frame(Renderer &);
+       virtual void finish_frame();
 
        using Scene::render;
        virtual void render(Renderer &, const Tag &tag = Tag()) const;
index f104562f3de9f2d0255aa2d6a1d4829c372002fd..ab1ba454a7d495ee553847acf161fb42249d59c3 100644 (file)
@@ -35,13 +35,13 @@ void OrderedScene::insert_after(Renderable &after, Renderable &r)
        renderables.insert(i, &r);
 }
 
-void OrderedScene::setup_frame() const
+void OrderedScene::setup_frame(Renderer &renderer)
 {
        for(RenderableList::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
-               (*i)->setup_frame();
+               (*i)->setup_frame(renderer);
 }
 
-void OrderedScene::finish_frame() const
+void OrderedScene::finish_frame()
 {
        for(RenderableList::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
                (*i)->finish_frame();
index ee06dfaebb1f8addfaeec06bffc211c2506b0759..53f7b008bd4965c61ca5f28291b10993b0b251c8 100644 (file)
@@ -25,8 +25,8 @@ public:
        void insert(unsigned, Renderable &);
        void insert_after(Renderable &, Renderable &);
 
-       virtual void setup_frame() const;
-       virtual void finish_frame() const;
+       virtual void setup_frame(Renderer &);
+       virtual void finish_frame();
 
        using Scene::render;
        virtual void render(Renderer &, const Tag & = Tag()) const;
index ce9c8f689a0feecd55214590f2dff25c3851850a..29c42324add861d9e7813ba252f4fde9217f20b5 100644 (file)
@@ -136,28 +136,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<Slot>::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<Slot>::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();
 }
index b450d0a5864ab76adcde1f92c1442a94b37fac89..1e5b6aa4c9894529e44cb0094c5b9a08837b01e6 100644 (file)
@@ -104,10 +104,10 @@ public:
        /** Adds a postprocessor to the pipeline. */
        void add_postprocessor(PostProcessor &);
 
-       virtual void setup_frame() const;
-       virtual void finish_frame() const;
+       virtual void setup_frame(Renderer &);
+       virtual void finish_frame();
 
-       void render() const;
+       void render();
        virtual void render(Renderer &, const Tag &tag = Tag()) const;
 
 private:
index 18319cb4595a398aa362c70d583e8ec37665702b..e90ab0243ee140173256ee3f2a6a1ba904fce7cc 100644 (file)
@@ -45,10 +45,10 @@ public:
        virtual const Geometry::BoundingSphere<float, 3> *get_bounding_sphere() const { return 0; }
 
        /** Called when starting to render a new frame. */
-       virtual void setup_frame() const { }
+       virtual void setup_frame(Renderer &) { }
 
        /** Called when a complete frame has been rendered. */
-       virtual void finish_frame() const { }
+       virtual void finish_frame() { }
 
        /** Renders the Renderable.  Implementors should take care to return the
        renderer to the state it was in, for example by using Renderer::Push. */
index d8853d9e3e229f5eff23631e437fc20eaea8ffd0..f461c88a4279155604b0ba519f7ea98ff3d096b1 100644 (file)
@@ -56,13 +56,13 @@ void ShadowMap::set_depth_bias(float b)
        depth_bias = b;
 }
 
-void ShadowMap::setup_frame() const
+void ShadowMap::setup_frame(Renderer &renderer)
 {
        if(rendered)
                return;
 
        rendered = true;
-       renderable.setup_frame();
+       renderable.setup_frame(renderer);
 
        Camera camera;
        const Vector4 &lpos = light.get_position();
@@ -84,11 +84,11 @@ void ShadowMap::setup_frame() const
        Bind bind_depth(DepthTest::lequal());
        fbo.clear(DEPTH_BUFFER_BIT);
 
-       Renderer renderer(&camera);
-       renderable.render(renderer, "shadow");
+       Renderer shadow_renderer(&camera);
+       renderable.render(shadow_renderer, "shadow");
 }
 
-void ShadowMap::finish_frame() const
+void ShadowMap::finish_frame()
 {
        renderable.finish_frame();
        rendered = false;
index 658b59a91a58a196b92063bc283f80686cdc26e8..5f2e16ecd950450befc7c87dc16a447957705102 100644 (file)
@@ -24,14 +24,14 @@ class ShadowMap: public Effect
 private:
        unsigned size;
        const Light &light;
-       mutable Framebuffer fbo;
-       mutable Matrix shadow_matrix;
+       Framebuffer fbo;
+       Matrix shadow_matrix;
        Texture2D depth_buf;
        Vector3 target;
        float radius;
        float depth_bias;
        mutable ProgramData shdata;
-       mutable bool rendered;
+       bool rendered;
 
 public:
        ShadowMap(unsigned, Renderable &, const Light &);
@@ -52,8 +52,8 @@ public:
        thin objects from casting shadows on nearby sufraces. */
        void set_depth_bias(float);
 
-       virtual void setup_frame() const;
-       virtual void finish_frame() const;
+       virtual void setup_frame(Renderer &);
+       virtual void finish_frame();
 
        virtual void render(Renderer &, const Tag &) const;
 };
index 137873dad8808b99a0717b31721e4fb67db5b1f5..d1fd3c1cea2a4c4ad0349fb1a30017cfa2b52920 100644 (file)
@@ -26,14 +26,14 @@ void SimpleScene::populate_cache() const
        }
 }
 
-void SimpleScene::setup_frame() const
+void SimpleScene::setup_frame(Renderer &renderer)
 {
        populate_cache();
        for(RenderableArray::const_iterator i=cache.begin(); i!=cache.end(); ++i)
-               (*i)->setup_frame();
+               (*i)->setup_frame(renderer);
 }
 
-void SimpleScene::finish_frame() const
+void SimpleScene::finish_frame()
 {
        for(RenderableArray::const_iterator i=cache.begin(); i!=cache.end(); ++i)
                (*i)->finish_frame();
index 8b91150ce2199e43142f4d60573718e32a72fc0c..420b00901696c3f6178996e334314144be4a5cef 100644 (file)
@@ -27,8 +27,8 @@ private:
        void populate_cache() const;
 
 public:
-       virtual void setup_frame() const;
-       virtual void finish_frame() const;
+       virtual void setup_frame(Renderer &);
+       virtual void finish_frame();
 
        using Scene::render;
        virtual void render(Renderer &, const Tag & = Tag()) const;
index 759e90be1f6c0bc0d48a37c8d5d7819313f7654b..cd759e4859c30ee754836411ce37cdb259fb29e1 100644 (file)
@@ -40,7 +40,7 @@ void View::render()
        if(content)
        {
                Renderer renderer(camera);
-               content->setup_frame();
+               content->setup_frame(renderer);
                content->render(renderer);
                content->finish_frame();
        }