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

Reply via email to