diff --git a/src/osgUtil/RenderBin.cpp b/src/osgUtil/RenderBin.cpp index c154cfd6e..395d5a319 100644 --- a/src/osgUtil/RenderBin.cpp +++ b/src/osgUtil/RenderBin.cpp @@ -417,7 +417,17 @@ void RenderBin::drawImplementation(osg::State& state,RenderLeaf*& previous) rbitr->second->draw(state,previous); } - if (_stateset.valid()) state.popStateSet(); + // now reset the state so its back in its default state. + if (previous) + { + StateGraph::moveToRootStateGraph(state,previous->_parent); + previous = NULL; + } + + if (_stateset.valid()) + { + state.popStateSet(); + } //osg::notify(osg::NOTICE)<<"end RenderBin::drawImplementation "<_parent); - state.apply(); - previous = NULL; - } - + state.apply(); } void RenderStage::drawPostRenderStages(osg::State& state,RenderLeaf*& previous) diff --git a/src/osgUtil/SceneView.cpp b/src/osgUtil/SceneView.cpp index c0e826beb..52d230178 100644 --- a/src/osgUtil/SceneView.cpp +++ b/src/osgUtil/SceneView.cpp @@ -1229,6 +1229,7 @@ void SceneView::draw() // re apply the defalt OGL state. _state->popAllStateSets(); + _state->apply(); if (_state->getCheckForGLErrors()!=osg::State::NEVER_CHECK_GL_ERRORS) {