]> git.tdb.fi Git - libs/gl.git/blob - source/scene.h
Add a shortcut for specifying both texture filters
[libs/gl.git] / source / scene.h
1 #ifndef MSP_GL_SCENE_H_
2 #define MSP_GL_SCENE_H_
3
4 #include <list>
5 #include "renderable.h"
6
7 namespace Msp {
8 namespace GL {
9
10 class Culler;
11
12 /**
13 Scenes are containers for other Renderables.  This is a base class that can't
14 be instantiated.  Examples of available Scene types are SimpleScene,
15 InstancedScene and OrderedScene.
16 */
17 class Scene: public Renderable
18 {
19 protected:
20         std::list<Culler *> cullers;
21
22         Scene() { }
23 public:
24         virtual ~Scene() { }
25
26         virtual void add(const Renderable &) = 0;
27         virtual void remove(const Renderable &) = 0;
28
29         void add_culler(Culler &);
30         void remove_culler(Culler &);
31
32         using Renderable::render;
33         virtual void render(const Tag & = Tag()) const;
34
35 protected:
36         virtual void setup_cullers(const Renderer &) const;
37         virtual bool cull(const Renderer &, const Renderable &) const;
38 };
39
40 } // namespace GL
41 } // namespace Msp
42
43 #endif