struct SortedRenderable
{
Renderable *renderable;
- bool in_frustum;
- float depth;
+ bool in_frustum = false;
+ float depth = 0.0f;
- SortedRenderable(Renderable *);
+ SortedRenderable(Renderable *r): renderable(r) { }
bool operator<(const SortedRenderable &o) const { return depth<o.depth; }
};
- std::vector<Renderable *> renderables;
+ std::vector<Renderable *> content;
SortOrder order = BACK_TO_FRONT;
DepthReference reference = FURTHEST;
- mutable std::vector<SortedRenderable> sorted_cache;
+ mutable std::map<const Camera *, std::vector<SortedRenderable> > sorted_cache;
public:
virtual void add(Renderable &);
/// Sets the reference point for sorting. Default is furthest from camera.
void set_reference(DepthReference);
-private:
- void populate_cache() const;
-
-public:
virtual void setup_frame(Renderer &);
virtual void finish_frame();