-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007-2008, 2010 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
#ifndef MSP_GL_INSTANCESCENE_H_
#define MSP_GL_INSTANCESCENE_H_
namespace Msp {
namespace GL {
-class Object;
-class ObjectInstance;
-
/**
-A Scene optimized for rendering ObjectInstances. All instances of the same
-Object are rendered in one go; otherwise the rendering order is unspecified.
+A Scene optimized for rendering instanced Renderables, such as ObjectInstances.
+All Renderables with the same instance key are rendered consecutively; within
+the same key rendering order is unspecified.
*/
class InstanceScene: public Scene
{
private:
- typedef std::set<const ObjectInstance *> InstanceSet;
- typedef std::map<const Object *, InstanceSet> ObjectMap;
typedef std::set<const Renderable *> RenderableSet;
+ typedef std::map<long, RenderableSet> InstanceMap;
- ObjectMap objects;
- RenderableSet renderables;
+ InstanceMap renderables;
public:
virtual void add(const Renderable &);
virtual void remove(const Renderable &);
- virtual void render(const Tag &tag = Tag()) const;
+ virtual void setup_frame() const;
+ virtual void finish_frame() const;
+
+ using Scene::render;
+ virtual void render(Renderer &, const Tag &tag = Tag()) const;
};
} // namespace GL