X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Fobjectinstance.h;h=5c36113daee00c89d7d9c8ba9a4931a603f584c9;hb=9e63512930bc7dace6dc169c65161961e5dcfcf6;hp=4d3e858b75e0915fe106ce320309855cca778154;hpb=70d9d2d28e5fe723c6b46894276e4c935f578e2d;p=libs%2Fgl.git diff --git a/source/render/objectinstance.h b/source/render/objectinstance.h index 4d3e858b..5c36113d 100644 --- a/source/render/objectinstance.h +++ b/source/render/objectinstance.h @@ -9,9 +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. + +The state used to render the object can be customized by overriding the +setup_render() and finish_render() functions. */ class ObjectInstance: public PlacedRenderable { @@ -32,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; };