1 #ifndef MSP_GL_ZSORTEDSCENE_H_
2 #define MSP_GL_ZSORTEDSCENE_H_
25 Sorts renderables by their distance from the camera before rendering. Requires
26 renderables to have a matrix.
28 class ZSortedScene: public Scene
34 struct SortedRenderable
36 Renderable *renderable;
40 SortedRenderable(Renderable *);
42 bool operator<(const SortedRenderable &o) const { return depth<o.depth; }
45 typedef std::set<Renderable *> RenderableSet;
46 typedef std::vector<SortedRenderable> SortedArray;
48 RenderableSet renderables;
50 DepthReference reference;
51 mutable SortedArray sorted_cache;
56 virtual void add(Renderable &);
57 virtual void remove(Renderable &);
59 /// Sets the sort order. Default is back to front.
60 void set_order(SortOrder);
62 /// Sets the reference point for sorting. Default is furthest from camera.
63 void set_reference(DepthReference);
66 void populate_cache() const;
69 virtual void setup_frame(Renderer &);
70 virtual void finish_frame();
72 virtual void render(Renderer &, Tag = Tag()) const;