[osg-users] CompositeViewer, update traversal, prerender branch

Robert Osfield robert.osfield at gmail.com
Fri Sep 19 04:02:24 PDT 2008

Hi Fabian,

The first problem to resolve is the fact that views are each using a
separate GraphicsWindow, this means a separate GraphicsContext for
each view, which in term means that FBO's/texture objects/display
lists have be duplicated for each context, unless you enable sharing
of contexts, but this itself introduces other problems.

The best thing you could do would be to create a single GraphicsWindow
and then share this between all your Views, you then won't have an
problems with rendering order and sharing of textures or FBOs as it'll
all be on one graphics context.  See the sogcompositeviewer example
for how to set up the Views/Camera & GraphicsWindow.


On Fri, Sep 19, 2008 at 11:17 AM, Fabian Bützow <buetz at uni-koblenz.de> wrote:
> Ok, sorry Robert, now more specifically:
> Hardware/software: WinXP, Opteron 2 GHz, 1 GB Ram, Geforce 8800 GS, OSG 2.4.
> The prerender node has 5 camera nodes, a textured rectangle is attached to
> each camera node. The cameras render to texture in a defined RenderOrder.
> The textures of the rectangles are connected in a way that the output of one
> RTT camera is the input of the next. The pointer to the final texture is
> stored in a data class. The live-camera image is retrieved via CMUfirewire
> API, and updated in a StateAttribute::Callback function attached to the
> initial live-camera texture.
> The Views are defined by the setUpViewInWindow() functions and added to a
> CompositeViewer. The scene data of the overall View (A) is set to the root
> node (thats the View that shows the updated texture), the scene data of the
> other two Views(B,C) is set to the subnodes in the scene graph. The camera
> position of each View is set via the getCamera()->setProjection() /
> ViewMatrix() methods. Rectangles are attached to the subnodes that should
> display the output of the prerender step (they get the texture via the
> pointer in the data class), but the textures dont get updated in the
> subviews B,C (they remain in their initialised state). I call
> CompositeViewer->frame() in the render loop. (No slave cameras or anything
> like that.)
> The strange thing is, when I set the scene data of View B or C to the root
> node, the rendered textures get updated. (Maybe then, for this View the
> prerender branch is also traversed, causing the loss of fps, but on the
> other hand the Callback of the live-camera texture is called only once per
> frame..)
> Thanks for your interest,
> cheers,
> Fabian
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

More information about the osg-users mailing list