]> git.tdb.fi Git - libs/gl.git/blobdiff - source/occludedscene.h
Add loading support for AmbientOcclusion
[libs/gl.git] / source / occludedscene.h
index 3f8ca76ce4dcbfe40dc3edaa5553f92785640acb..2898bb3ff92032c703c916232ae7459845c0fe8c 100644 (file)
@@ -19,7 +19,7 @@ class OccludedScene: public Scene
 private:
        struct OccludedRenderable
        {
-               const Renderable *renderable;
+               Renderable *renderable;
                const Geometry::BoundingSphere<float, 3> *bounding_sphere;
                bool in_frustum;
                bool occluder;
@@ -28,7 +28,7 @@ private:
                OccludedRenderable();
        };
 
-       typedef std::set<const Renderable *> RenderableSet;
+       typedef std::set<Renderable *> RenderableSet;
        typedef std::vector<OccludedRenderable> OccludedArray;
 
        Mesh bounding_mesh;
@@ -42,10 +42,17 @@ public:
        OccludedScene();
        ~OccludedScene();
 
-       virtual void add(const Renderable &);
-       virtual void remove(const Renderable &);
+       virtual void add(Renderable &);
+       virtual void remove(Renderable &);
 
-       virtual void render(Renderer &, const Tag &) const;
+private:
+       void populate_cache() const;
+
+public:
+       virtual void setup_frame(Renderer &);
+       virtual void finish_frame();
+
+       virtual void render(Renderer &, const Tag & = Tag()) const;
 };
 
 } // namespace GL