X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fzsortedscene.h;h=cb21061bae301db5f7851c54130112d29e04c011;hp=b032cbcdf01f08e228846aebb32b3c5b96c60d37;hb=91d3eac06389c0bb0363f643790581403b5fca1b;hpb=041717fbfb7d9a46459f15ecc55a5520f84d006c diff --git a/source/zsortedscene.h b/source/zsortedscene.h index b032cbcd..cb21061b 100644 --- a/source/zsortedscene.h +++ b/source/zsortedscene.h @@ -30,16 +30,16 @@ class ZSortedScene: public Scene private: struct SortedRenderable { - const Renderable *renderable; + Renderable *renderable; bool in_frustum; float depth; - SortedRenderable(const Renderable *); + SortedRenderable(Renderable *); bool operator<(const SortedRenderable &o) const { return depth RenderableSet; + typedef std::set RenderableSet; typedef std::vector SortedArray; RenderableSet renderables; @@ -50,8 +50,8 @@ private: public: ZSortedScene(); - virtual void add(const Renderable &); - virtual void remove(const Renderable &); + virtual void add(Renderable &); + virtual void remove(Renderable &); /// Sets the sort order. Default is back to front. void set_order(SortOrder); @@ -59,7 +59,14 @@ public: /// Sets the reference point for sorting. Default is furthest from camera. void set_reference(DepthReference); - virtual void render(Renderer &, const Tag &) const; +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