]> git.tdb.fi Git - libs/gl.git/blobdiff - source/renderable.h
Use libmspmath to provide vector and matrix operations
[libs/gl.git] / source / renderable.h
index 2342ae288cfed9b4d8fa61f25bf932ae47058540..b53fa9ac839307347bb614db7052dcfbe5a7a8cb 100644 (file)
@@ -7,6 +7,7 @@
 namespace Msp {
 namespace GL {
 
+class Matrix;
 class Renderer;
 
 /**
@@ -15,6 +16,12 @@ a Renderer, and may optionally provide support for standalone rendering.
 
 The render methods take a Tag to identify a render pass.  It is most commonly
 used together with Techniques and Pipelines to implement multipass rendering.
+
+The setup_frame and finish_frame methods provide a mechanism for performing
+once-per-frame operations.  This is most useful for effects, which may need to
+do auxiliary rendering.  With complex rendering hierarchies, these methods may
+be called multiple times for one frame, but it's guaranteed that no rendering
+will occur before a setup_frame call or after a finish_frame call.
 */
 class Renderable
 {
@@ -27,6 +34,16 @@ public:
        returned value is treated as opaque. */
        virtual long get_instance_key() const { return 0; }
 
+       /** Returns the model matrix of the Renderable.  Null is returned if no such
+       matrix exists. */
+       virtual const Matrix *get_matrix() const { return 0; }
+
+       /** Called when starting to render a new frame. */
+       virtual void setup_frame() const { }
+
+       /** Called when a complete frame has been rendered. */
+       virtual void finish_frame() const { }
+
        /** Renders the renderable without a renderer.  This can be convenient in
        some simple cases, but most renderables don't need to implement this
        method. */