Implemented stereo support into osgkeystone as a testbed for moving stereo support from SceneView into osgViewer

This commit is contained in:
Robert Osfield
2013-04-18 09:47:28 +00:00
parent 65f23ba9af
commit adea6c9329
4 changed files with 281 additions and 128 deletions

View File

@@ -161,6 +161,8 @@ SceneView::SceneView(DisplaySettings* ds)
_interlacedStereoStencilHeight = 0;
_dynamicObjectCount = 0;
_resetColorMaskToAllEnabled = true;
}
SceneView::SceneView(const SceneView& rhs, const osg::CopyOp& copyop):
@@ -194,6 +196,8 @@ SceneView::SceneView(const SceneView& rhs, const osg::CopyOp& copyop):
_interlacedStereoStencilHeight = rhs._interlacedStereoStencilHeight;
_dynamicObjectCount = 0;
_resetColorMaskToAllEnabled = rhs._resetColorMaskToAllEnabled;
}
SceneView::~SceneView()
@@ -1358,20 +1362,22 @@ void SceneView::draw()
_localStateSet->setAttribute(getViewport());
// ensure that all color planes are active.
osg::ColorMask* cmask = static_cast<osg::ColorMask*>(_localStateSet->getAttribute(osg::StateAttribute::COLORMASK));
if (cmask)
if (_resetColorMaskToAllEnabled)
{
cmask->setMask(true,true,true,true);
// ensure that all color planes are active.
osg::ColorMask* cmask = static_cast<osg::ColorMask*>(_localStateSet->getAttribute(osg::StateAttribute::COLORMASK));
if (cmask)
{
cmask->setMask(true,true,true,true);
}
else
{
cmask = new osg::ColorMask(true,true,true,true);
_localStateSet->setAttribute(cmask);
}
_renderStage->setColorMask(cmask);
}
else
{
cmask = new osg::ColorMask(true,true,true,true);
_localStateSet->setAttribute(cmask);
}
_renderStage->setColorMask(cmask);
// bog standard draw.
_renderStage->drawPreRenderStages(_renderInfo,previous);
_renderStage->draw(_renderInfo,previous);