globals->set_renderer(render);
render->init();
render->setViewer(viewer.get());
+
viewer->getDatabasePager()->setUpThreads(1, 1);
- render->splashinit();
+ // must do this before splashinit for Rembrandt
flightgear::CameraGroup::buildDefaultGroup(viewer.get());
-
+ render->splashinit();
+
fgOSResetProperties();
-
// init some things manually
// which do not follow the regular init pattern
}
// replace the viewer's scene completely
- if (getViewer())
+ if (getViewer()) {
getViewer()->setSceneData(new osg::Group);
-
+ }
#ifdef FG_JPEG_SERVER
jpgRenderFrame = NULL;
// critical parts of the scene graph in addition to the splash screen.
void
FGRenderer::splashinit( void )
- {
+{
+ // important that we reset the viewer sceneData here, to ensure the reference
+ // time for everything is in sync; otherwise on reset the Viewer and
+ // GraphicsWindow clocks are out of sync.
osgViewer::Viewer* viewer = getViewer();
viewer->setName("osgViewer");
- _viewerSceneRoot = dynamic_cast<osg::Group*>(viewer->getSceneData());
+ _viewerSceneRoot = new osg::Group;
_viewerSceneRoot->setName("viewerSceneRoot");
+ viewer->setSceneData(_viewerSceneRoot);
ref_ptr<Node> splashNode = fgCreateSplashNode();
if (_classicalRenderer) {
}
}
- _frameStamp = viewer->getFrameStamp();
+ _frameStamp = new osg::FrameStamp;
+ viewer->setFrameStamp(_frameStamp.get());
// Scene doesn't seem to pass the frame stamp to the update
// visitor automatically.
_updateVisitor->setFrameStamp(_frameStamp.get());