]> git.tdb.fi Git - libs/gl.git/blobdiff - source/scene.h
Add a Scene type that sorts its renderables by depth
[libs/gl.git] / source / scene.h
index 3b35f45b5558702a0d7f33019456ab444e5b5be1..fbc57a80e46e396b4128b31d6f86c5562c2b86ab 100644 (file)
@@ -1,10 +1,3 @@
-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2010-2011  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #ifndef MSP_GL_SCENE_H_
 #define MSP_GL_SCENE_H_
 
@@ -13,14 +6,18 @@ Distributed under the LGPL
 namespace Msp {
 namespace GL {
 
+class Culler;
+
 /**
 Scenes are containers for other Renderables.  This is a base class that can't
-be instantiated.  At the moment the available Scene types are SimpleScene,
+be instantiated.  Examples of available Scene types are SimpleScene,
 InstancedScene and OrderedScene.
 */
 class Scene: public Renderable
 {
 protected:
+       std::list<Culler *> cullers;
+
        Scene() { }
 public:
        virtual ~Scene() { }
@@ -28,8 +25,15 @@ public:
        virtual void add(const Renderable &) = 0;
        virtual void remove(const Renderable &) = 0;
 
+       void add_culler(Culler &);
+       void remove_culler(Culler &);
+
        using Renderable::render;
        virtual void render(const Tag & = Tag()) const;
+
+protected:
+       virtual void setup_cullers(const Renderer &) const;
+       virtual bool cull(const Renderer &, const Renderable &) const;
 };
 
 } // namespace GL