X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fsimplescene.h;h=420b00901696c3f6178996e334314144be4a5cef;hp=be86285bba84b21ea25f98aad1d3f51954a165b1;hb=6b0a93110454cc8d84d0d9b9b29fe9d0ecbaa4d5;hpb=db498c7e634fa999cf4b4a8b67c49813009b1790 diff --git a/source/simplescene.h b/source/simplescene.h index be86285b..420b0090 100644 --- a/source/simplescene.h +++ b/source/simplescene.h @@ -8,21 +8,27 @@ namespace Msp { 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 RenderableSet; + typedef std::set RenderableSet; + typedef std::vector 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;