I'm using the CompositeViewer to create a window of a scene. I then add a
viewport of another scene on top. I'm having problems with events.
If I created the the viewport window first, mouse events work for both, but
keyboard events only only work for the mainwindow.
Code:
osgViewer::CompositeViewer* viewer = new osgViewer::CompositeViewer;
osg::ref_ptr<osg::GraphicsContext::Traits> traits = new
osg::GraphicsContext::Traits;
traits->x = 100;
traits->y = 100;
traits->width = 1000;
traits->height = 800;
traits->windowDecoration = true;
traits->doubleBuffer = true;
osg::ref_ptr<osg::GraphicsContext> gc =
osg::GraphicsContext::createGraphicsContext(traits.get());
//PIP window
{
osgViewer::View* view = new osgViewer::View;
view->getCamera()->setRenderOrder(osg::Camera::POST_RENDER,1);
viewer->addView(view);
view->setSceneData(osgDB::readNodeFile("cessnafire.osgt"));
view->getCamera()->setViewport(new osg::Viewport(traits->width/2,0,
traits->width/2, traits->height/2));
view->getCamera()->setGraphicsContext(gc.get());
view->setCameraManipulator(new osgGA::TrackballManipulator);
}
//Main window
{
osgViewer::View* view = new osgViewer::View;
viewer->addView(view);
view->setSceneData(osgDB::readNodeFile("cessnafire.osgt"));
view->getCamera()->setViewport(new osg::Viewport(0, 0, traits->width,
traits->height));
view->getCamera()->setGraphicsContext(gc.get());
view->setCameraManipulator(new osgGA::TrackballManipulator);
}
return viewer->run();
If i create the mainwindow first, keyboard events work for both, but mouse
events only work on the mainwindow.
Code:
//Main window
{
osgViewer::View* view = new osgViewer::View;
viewer->addView(view);
view->setSceneData(osgDB::readNodeFile("cessnafire.osgt"));
view->getCamera()->setViewport(new osg::Viewport(0, 0, traits->width,
traits->height));
view->getCamera()->setGraphicsContext(gc.get());
view->setCameraManipulator(new osgGA::TrackballManipulator);
}
//PIP window
{
osgViewer::View* view = new osgViewer::View;
viewer->addView(view);
view->setSceneData(osgDB::readNodeFile("cessnafire.osgt"));
view->getCamera()->setViewport(new osg::Viewport(traits->width/2,0,
traits->width/2, traits->height/2));
view->getCamera()->setGraphicsContext(gc.get());
view->setCameraManipulator(new osgGA::TrackballManipulator);
}
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=60995#60995
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org