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
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org