OSG has an update traversal that allows you to update the scene graph. Actually, you can modify the scene graph anytime you're not in the cull or draw traversal. Just make sure any parts of the scene graph you want to modify are marked as DYNAMIC DataVariance.
There are update callbacks built-in to OSG to allow application code to perform modifications, but in your case you'll need a gate or other construct to ensure that your scene graph modification thread can only execute when it's safe to modify the scene graph. Paul Martz Skew Matrix Software LLC http://www.skew-matrix.com 303 859 9466 > Hi all, > > I'm in the process of redesigning our OSG application (the > current version is little better than a proof-of-principle > prototype, and wasn't written by me) and I'm trying to sort > out how the threads will interact. The application has to > render imagery from one or more views of a common scene which > is updated via a network connection. > The rendered imagery will probably need to be delivered back > over the network, either by reading back each frame or by > using a separate video capture card. > > My current plan is to have a thread which interacts with the > network and converts the packets into updates to the scene > graph, then have a second thread which does the rendering, > and possibly a third thread to readback and compress the > imagery (though this may be done separately via a video > capture card). I am also considering a fourth thread to do > the "scene management" stuff, like applying updates from the > network and loading models in the background, but I'm not > sure how necessary this is. > > So my questions are as follows: > > Is my architecture sensible? > - Is there a 'better' way to do it? > - How closely should I integrate my application with OSG? From a > design point of view I'm tempted to create lots of adapters > or facades (ie "do it properly"), but as I will also be the > one doing the implementation I'm not sure I can be bothered. > > How easy is it use OSG in a multi-threaded environment? > - Do I need to provide my own mutual exclusion code when modifying > the scene graph or is it already taken care of? > > I think I will need each of the viewpoints to be rendered to > a separate window, what is the best mechanism for doing this? > - Each view should use the same scene graph except they will each > have a different set of render passes and some different > shaders and uniforms, is this achievable, and how? > - Will each view need to run in a separate thread, or can they all > run in one thread? Are there performance implications either way? > > Thanks in advance for any help. > > Rob. > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-opensce negraph.org _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

