Hello,

I have been working on switching over to ON_DEMAND frame updates while using osgViewer::Viewer and I encountered the following problems (all of these issues are specific to ON_DEMAND frame updates):

1. Some of the event handlers such as osgViewer::HelpHandler, and osgViewer::ScreenCaptureHandler (maybe others) do not request a new frame explicitly after their keyboard events are triggered. However, a number of the event handlers in the same folder do (such as the StatsHandler). Thus, the HelpHandler does nothing until something else triggers a frame update. If I add another event handler before the HelpHandler and call osgGA::GUIActionAdapter::requestRedraw() when "h" is pressed, then the behavior is similar to that of the StatsHandler, and the first key press does not seem to have any effect (see StatsHandler behavior below), but all subsequent key presses work as expected.

2. The StatsHandler does not show up after pressing "s" the first time. Every subsequent time "s" is pressed, the StatsHandler behaves as expected.

3. The default behavior of Viewer::checkNeedToDoFrame() makes it difficult to use with scene graphs that contain UpdateCallbacks because there is no easy way that I have found to disable or modify the getNumChildrenRequiringUpdateTraversal() check (without deriving).

Some example code:

osg::ref_ptr <osgViewer::Viewer> viewer (new osgViewer::Viewer ());

// Setup viewer camera and context here...

// ...

viewer->addEventHandler (new osgViewer::StatsHandler ());

viewer->setRunFrameScheme (osgViewer::ViewerBase::ON_DEMAND);

viewer->run ();


I did override the osgViewer::Viewer::checkNeedToDoFrame() behavior to skip the UpdateCallback check (so frames were not continuously rendered as a result) in order to address issue #3 above.

Thank you,

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

Reply via email to