robertosfield wrote: > Does the problem appear with your own viewer? Does you own viewer setup the > Camera's replacing the viewer's master Camera? Does this override neglect to > set up any default OpenGL state? >
I use the following class: class ViewerWidget : public osgQt::GLWidget, public osgViewer::CompositeViewer Here is a code snippet of the constructor: Code: ViewerWidget::ViewerWidget(QWidget* iParent, const QGLWidget* iShareWidget, Qt::WindowFlags iFlags) : osgQt::GLWidget(iParent, iShareWidget, iFlags) ,timer(0) { osgViewer::View* view = new osgViewer::View; view->setName("Main view"); addView(view); view->setCamera(createCamera(viframework::viosg::screenWidth(), viframework::viosg::screenHeight())); view->setCameraManipulator(new osgGA::TrackballManipulator); initWindowManager(view); } osg::Camera* ViewerWidget::createCamera(int width, int height) { osg::ref_ptr<osg::Camera> camera = new osg::Camera; camera->setGraphicsContext(new osgQt::GraphicsWindowQt(this)); camera->setClearColor(osg::Vec4(0.2, 0.2, 0.6, 1.0)); camera->setViewport(new osg::Viewport(0, 0, width, height)); double aspect_ratio = 2.0*static_cast<double>(width)/static_cast<double>(height); camera->setProjectionMatrixAsPerspective(30.0, aspect_ratio, 1.0, 10000.0); return camera.release(); } void ViewerWidget::initWindowManager(osgViewer::View* iView) { osg::ref_ptr<osgWidget::WindowManager> wm = new osgWidget::WindowManager(iView, 1280.0f, 1024.0f, MASK_2D, osgWidget::WindowManager::WM_USE_RENDERBINS); osg::Camera* camera = wm->createParentOrthoCamera(); SceneManager manager; manager.getRoot()->addChild(camera); manager.setWindowManager(wm); wm->resizeAllWindows(); iView->addEventHandler(new osgWidget::MouseHandler(wm)); iView->addEventHandler(new osgWidget::ResizeHandler(wm, camera)); } unsigned int viframework::viosg::screenHeight() { osg::GraphicsContext::WindowingSystemInterface* wsi = osg::GraphicsContext::getWindowingSystemInterface(); osg::GraphicsContext::ScreenSettings settings; osg::GraphicsContext::Traits traits; wsi->getScreenSettings(traits, settings); return static_cast<unsigned int>(settings.height); } unsigned int viframework::viosg::screenWidth() { osg::GraphicsContext::WindowingSystemInterface* wsi = osg::GraphicsContext::getWindowingSystemInterface(); osg::GraphicsContext::ScreenSettings settings; osg::GraphicsContext::Traits traits; wsi->getScreenSettings(traits, settings); return static_cast<unsigned int>(settings.width); } Cheers, Gianni ------------------ Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=57362#57362 _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org