X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fsimplescene.h;h=e56aeb0c982592b5e8995f5ac2d78b47fc972091;hp=b28b5c0ce12e628d4bfb1b1b1dbe7550746a7658;hb=0cacf19c2e6aaa182ae0fcc7dfaae345aedd0e74;hpb=9addd3d476245415244e59333a36a8fc0eae42bf diff --git a/source/simplescene.h b/source/simplescene.h index b28b5c0c..e56aeb0c 100644 --- a/source/simplescene.h +++ b/source/simplescene.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2010 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #ifndef MSP_GL_SIMPLESCENE_H_ #define MSP_GL_SIMPLESCENE_H_ @@ -15,20 +8,29 @@ 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(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(); - virtual void render(const Tag &tag = Tag()) const; + virtual void render(Renderer &, const Tag & = Tag()) const; }; } // namespace GL