-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2010-2011 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
#ifndef MSP_GL_SIMPLESCENE_H_
#define MSP_GL_SIMPLESCENE_H_
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(Renderable &);
+ virtual void remove(Renderable &);
+
+private:
+ void populate_cache() const;
public:
- virtual void add(const Renderable &);
- virtual void remove(const Renderable &);
+ virtual void setup_frame(Renderer &);
+ virtual void finish_frame();
using Scene::render;
virtual void render(Renderer &, const Tag & = Tag()) const;