From 5c78d06dad6e0e1e95e0562de9898d90c79a2870 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 12 Jan 2007 12:10:06 +0000 Subject: [PATCH] Added a default StateSet to osg::View's master Camera. Wired up osgViewer::Viewer so that the master Camera's StateSet is passed to osgUtil::SceneView to use as its global StateSet. --- src/osg/View.cpp | 5 +++++ src/osgUtil/SceneView.cpp | 14 ++------------ src/osgViewer/View.cpp | 1 - src/osgViewer/Viewer.cpp | 2 ++ 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/osg/View.cpp b/src/osg/View.cpp index 63dd18783..061b814f5 100644 --- a/src/osg/View.cpp +++ b/src/osg/View.cpp @@ -12,6 +12,7 @@ */ #include #include +#include using namespace osg; @@ -20,8 +21,12 @@ View::View() // osg::notify(osg::NOTICE)<<"Constructing osg::View"<setProjectionMatrixAsFrustum(-0.325, 0.325, -0.26, 0.26, 1.0f,10000.0f); _camera->setClearColor(osg::Vec4f(0.2f, 0.2f, 0.4f, 1.0f)); + + osg::StateSet* stateset = _camera->getOrCreateStateSet(); + stateset->setGlobalDefaults(); } View::~View() diff --git a/src/osgUtil/SceneView.cpp b/src/osgUtil/SceneView.cpp index 5f9db0c79..e88c29392 100644 --- a/src/osgUtil/SceneView.cpp +++ b/src/osgUtil/SceneView.cpp @@ -155,7 +155,8 @@ void SceneView::setDefaults(unsigned int options) _camera->getProjectionMatrix().makePerspective(50.0f,1.4f,1.0f,10000.0f); _camera->getViewMatrix().makeIdentity(); - _globalStateSet = new osg::StateSet; + if (!_globalStateSet) _globalStateSet = new osg::StateSet; + else _globalStateSet->clear(); if ((options & HEADLIGHT) || (options & SKY_LIGHT)) { @@ -215,17 +216,6 @@ void SceneView::setDefaults(unsigned int options) _cullVisitor->setRenderStage(_renderStage.get()); _globalStateSet->setGlobalDefaults(); - - - // enable depth testing by default. - _globalStateSet->setMode(GL_DEPTH_TEST, osg::StateAttribute::ON); - -#if 0 - // set up an alphafunc by default to speed up blending operations. - osg::AlphaFunc* alphafunc = new osg::AlphaFunc; - alphafunc->setFunction(osg::AlphaFunc::GREATER,1.0f); - _globalStateSet->setAttributeAndModes(alphafunc, osg::StateAttribute::OFF); -#endif // set up an texture environment by default to speed up blending operations. osg::TexEnv* texenv = new osg::TexEnv; diff --git a/src/osgViewer/View.cpp b/src/osgViewer/View.cpp index c24ac6ace..571b0327d 100644 --- a/src/osgViewer/View.cpp +++ b/src/osgViewer/View.cpp @@ -14,7 +14,6 @@ #include #include -#include #include #include diff --git a/src/osgViewer/Viewer.cpp b/src/osgViewer/Viewer.cpp index bd20dd4bc..ebcc5f8a8 100644 --- a/src/osgViewer/Viewer.cpp +++ b/src/osgViewer/Viewer.cpp @@ -454,6 +454,7 @@ void Viewer::setUpRenderingSupport() osgUtil::SceneView* sceneView = new osgUtil::SceneView; _cameraSceneViewMap[_camera] = sceneView; + sceneView->setGlobalStateSet(_camera->getStateSet()); sceneView->setDefaults(); sceneView->setDisplaySettings(ds); sceneView->setCamera(_camera.get()); @@ -472,6 +473,7 @@ void Viewer::setUpRenderingSupport() osgUtil::SceneView* sceneView = new osgUtil::SceneView; _cameraSceneViewMap[slave._camera] = sceneView; + sceneView->setGlobalStateSet(_camera->getStateSet()); sceneView->setDefaults(); sceneView->setCamera(slave._camera.get()); sceneView->setDisplaySettings(ds);