X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Fsimplescene.h;fp=source%2Frender%2Fsimplescene.h;h=e56aeb0c982592b5e8995f5ac2d78b47fc972091;hb=7aaec9a70b8d7733429bec043f8e33e02956f266;hp=0000000000000000000000000000000000000000;hpb=bec07999d95b76f4b47cffcc564d0cd0afc0435e;p=libs%2Fgl.git diff --git a/source/render/simplescene.h b/source/render/simplescene.h new file mode 100644 index 00000000..e56aeb0c --- /dev/null +++ b/source/render/simplescene.h @@ -0,0 +1,39 @@ +#ifndef MSP_GL_SIMPLESCENE_H_ +#define MSP_GL_SIMPLESCENE_H_ + +#include +#include "scene.h" + +namespace Msp { +namespace GL { + +/** +A simple yet efficient scene. Rendering order is unspecified. +*/ +class SimpleScene: public Scene +{ +private: + 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 setup_frame(Renderer &); + virtual void finish_frame(); + + virtual void render(Renderer &, const Tag & = Tag()) const; +}; + +} // namespace GL +} // namespace Msp + +#endif