Hi Brad,

On Thu, Mar 25, 2010 at 8:17 PM, Brad Colbert <bcolb...@rscusa.com> wrote:
> Where is the best place to update application level things before the
> frame is drawn? (ie. network reads/writes, model updates, text
> setting... )

The answer will depend upon your viewer/application and the scene
graph you are trying to modify.  The OSG has a update traversal that
calls update callbacks on node, drawables, statesets and
stateattributes so you could attach an update callback for this.

There is also support for in osgViewer::Viewer/CompositeViewer for
attaching a custom osg::Operation that called on every fame.  You
simply subclass form osg::Operation and implement the virtual void
operator () method, then attach this via
viewer.addUpdateOperation(pointerToMyOperation);

Finally you have control over the frame loop in you application so
outside of calling viewer.frame() you can do you updates.  If you are
presently using viewer.run() for the frame loop you can break it down
in to it's constituent parts (have a look at the source code):

   viewer.run()

is equivialant to :

   viewer.realize();
   while(!viewer.done())
   {
      viewer.frame();
   }

Which can be further broken down in to:

   viewer.realize();
   while(!viewer.done())
   {
      viewer.advance();
      viewer.eventTraversal();
      viewer.updateTraversal();
      viewer.renderingTraversals();
   }

You can place you own update could into these frame loops where you
find appropriate.

Another possible route is to subclass from
osgViewer::Viewer/CompositeViewer and override the updateTraversal()
method then frame() or run() will call the you own code.

Finally, in you are doing IO operations then you are typically best to
put these in an separate thread than one that runs the frame loop as
IO operations can be prone to high latencies that can cause frame
breaks.

Robert.
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to