X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Fobjectinstance.h;h=5c36113daee00c89d7d9c8ba9a4931a603f584c9;hb=9e63512930bc7dace6dc169c65161961e5dcfcf6;hp=0ebef2fedf30012e8db4d8bf3b228693b3d1ecfc;hpb=7aaec9a70b8d7733429bec043f8e33e02956f266;p=libs%2Fgl.git diff --git a/source/render/objectinstance.h b/source/render/objectinstance.h index 0ebef2fe..5c36113d 100644 --- a/source/render/objectinstance.h +++ b/source/render/objectinstance.h @@ -9,12 +9,11 @@ namespace Msp { namespace GL { /** -Represents a single instance of an Object. Thanks to being derived from -Placeable in can be positioned without additional effort. Other instance -parameters can be set by overriding the hook functions. +Represents a single instance of an Object. A model matrix is provided through +the Placeable base class. -ObjectInstances can benefit from being put in an InstanceScene, which will -render all instances of the same object consecutively. +The state used to render the object can be customized by overriding the +setup_render() and finish_render() functions. */ class ObjectInstance: public PlacedRenderable { @@ -35,21 +34,22 @@ public: ObjectInstance(const Object &); const Object &get_object() const { return object; } - virtual IntPtr get_instance_key() const { return reinterpret_cast(&object); } virtual const Geometry::BoundingSphere *get_bounding_sphere() const { return object.get_bounding_sphere(); } - virtual void render(Renderer &, const Tag & = Tag()) const; + virtual void render(Renderer &, Tag = Tag()) const; /** Hook function, called from Object just before rendering the mesh. Renderer state will have been pushed before this is called. */ - virtual void setup_render(Renderer &, const Tag &) const; + virtual void setup_render(Renderer &, Tag) const; /** Hook function, called from Object right after rendering the mesh. Since Object takes care of pushing Renderer state, this rarely needs to do anything. */ - virtual void finish_render(Renderer &, const Tag &) const { } + virtual void finish_render(Renderer &, Tag) const { } + /** Returns the level of detail to render this instance with. This function + should apply LoD bias from the Renderer if desired. */ virtual unsigned get_level_of_detail(const Renderer &) const; };