namespace GL {
/**
-The simplest possible Scene. Rendering order is unspecified.
+A simple yet efficient scene. Rendering order is unspecified.
*/
class SimpleScene: public Scene
{
private:
- typedef std::set<const Renderable *> RenderableSet;
+ typedef std::set<Renderable *> RenderableSet;
+ typedef std::vector<Renderable *> RenderableArray;
RenderableSet renderables;
+ mutable RenderableArray cache;
public:
- virtual void add(const Renderable &);
- virtual void remove(const Renderable &);
+ virtual void add(Renderable &);
+ virtual void remove(Renderable &);
- virtual void setup_frame() const;
- virtual void finish_frame() const;
+private:
+ void populate_cache() const;
+
+public:
+ virtual void setup_frame(Renderer &);
+ virtual void finish_frame();
- using Scene::render;
virtual void render(Renderer &, const Tag & = Tag()) const;
};