diff --git a/src/osgUtil/RenderStage.cpp b/src/osgUtil/RenderStage.cpp index 2b707e57d..e05af611a 100644 --- a/src/osgUtil/RenderStage.cpp +++ b/src/osgUtil/RenderStage.cpp @@ -1342,40 +1342,42 @@ void RenderStage::drawImplementation(osg::RenderInfo& renderInfo,RenderLeaf*& pr if (_colorMask.valid()) _colorMask->apply(state); else glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE); - if (_clearMask & GL_COLOR_BUFFER_BIT) + if (_clearMask != 0) { - glClearColor( _clearColor[0], _clearColor[1], _clearColor[2], _clearColor[3]); - } + if (_clearMask & GL_COLOR_BUFFER_BIT) + { + glClearColor( _clearColor[0], _clearColor[1], _clearColor[2], _clearColor[3]); + } - if (_clearMask & GL_DEPTH_BUFFER_BIT) - { - #if !defined(OSG_GLES1_AVAILABLE) && !defined(OSG_GLES2_AVAILABLE) && !defined(OSG_GLES3_AVAILABLE) - glClearDepth( _clearDepth); - #else - glClearDepthf( _clearDepth); + if (_clearMask & GL_DEPTH_BUFFER_BIT) + { + #if !defined(OSG_GLES1_AVAILABLE) && !defined(OSG_GLES2_AVAILABLE) && !defined(OSG_GLES3_AVAILABLE) + glClearDepth( _clearDepth); + #else + glClearDepthf( _clearDepth); + #endif + + glDepthMask ( GL_TRUE ); + state.haveAppliedAttribute( osg::StateAttribute::DEPTH ); + } + + if (_clearMask & GL_STENCIL_BUFFER_BIT) + { + glClearStencil( _clearStencil); + glStencilMask ( ~0u ); + state.haveAppliedAttribute( osg::StateAttribute::STENCIL ); + } + + #if !defined(OSG_GLES1_AVAILABLE) && !defined(OSG_GLES2_AVAILABLE) && !defined(OSG_GLES3_AVAILABLE) && !defined(OSG_GL3_AVAILABLE) + if (_clearMask & GL_ACCUM_BUFFER_BIT) + { + glClearAccum( _clearAccum[0], _clearAccum[1], _clearAccum[2], _clearAccum[3]); + } #endif - glDepthMask ( GL_TRUE ); - state.haveAppliedAttribute( osg::StateAttribute::DEPTH ); + glClear( _clearMask ); } - if (_clearMask & GL_STENCIL_BUFFER_BIT) - { - glClearStencil( _clearStencil); - glStencilMask ( ~0u ); - state.haveAppliedAttribute( osg::StateAttribute::STENCIL ); - } - - #if !defined(OSG_GLES1_AVAILABLE) && !defined(OSG_GLES2_AVAILABLE) && !defined(OSG_GLES3_AVAILABLE) && !defined(OSG_GL3_AVAILABLE) - if (_clearMask & GL_ACCUM_BUFFER_BIT) - { - glClearAccum( _clearAccum[0], _clearAccum[1], _clearAccum[2], _clearAccum[3]); - } - #endif - - - glClear( _clearMask ); - #ifdef USE_SCISSOR_TEST glDisable( GL_SCISSOR_TEST ); #endif