+ virtual ~Renderable() { }
+
+ /** Returns a key used for grouping Renderables in an InstanceScene. The
+ returned value is treated as opaque. */
+ virtual IntPtr get_instance_key() const { return 0; }
+
+ /** Returns the model matrix of the Renderable. Null is returned if no such
+ matrix exists. The matrix should be in world space for some effects to work
+ correctly. */
+ virtual const Matrix *get_matrix() const { return 0; }
+
+ /** Returns a bounding sphere that completely encloses the Renderable. The
+ bounding sphere is expressed in the renderable's coordinates. Null is
+ returned if the bounding sphere cannot be determined. */
+ virtual const Geometry::BoundingSphere<float, 3> *get_bounding_sphere() const { return 0; }
+
+ /** Called when starting to render a new frame. */
+ virtual void setup_frame(Renderer &) { }
+
+ /** Called when a complete frame has been rendered. */
+ virtual void finish_frame() { }