Added support for handling viewports with offset origins, and with it split stereo.

This commit is contained in:
Robert Osfield
2013-12-10 13:38:27 +00:00
parent bc95ea97fb
commit ff4a0ce1e2
2 changed files with 4 additions and 4 deletions

View File

@@ -61,7 +61,7 @@ class OSGVOLUME_EXPORT VolumeScene : public osg::Group
osg::ref_ptr<osg::Geometry> _geometry;
osg::ref_ptr<osg::Vec3Array> _vertices;
osg::ref_ptr<osg::StateSet> _stateset;
osg::ref_ptr<osg::Uniform> _viewportSizeUniform;
osg::ref_ptr<osg::Uniform> _viewportDimensionsUniform;
Tiles _tiles;

View File

@@ -244,8 +244,8 @@ void VolumeScene::traverse(osg::NodeVisitor& nv)
viewData->_stateset->setTextureAttributeAndModes(0, viewData->_colorTexture.get(), osg::StateAttribute::ON);
viewData->_stateset->setTextureAttributeAndModes(1, viewData->_depthTexture.get(), osg::StateAttribute::ON);
viewData->_viewportSizeUniform = new osg::Uniform("viewportSize",osg::Vec2(1280.0,1024.0));
viewData->_stateset->addUniform(viewData->_viewportSizeUniform.get());
viewData->_viewportDimensionsUniform = new osg::Uniform("viewportDimensions",osg::Vec4(0.0,0.0,1280.0,1024.0));
viewData->_stateset->addUniform(viewData->_viewportDimensionsUniform.get());
geode->setStateSet(viewData->_stateset.get());
@@ -266,7 +266,7 @@ void VolumeScene::traverse(osg::NodeVisitor& nv)
osg::Viewport* viewport = cv->getCurrentRenderStage()->getViewport();
if (viewport)
{
viewData->_viewportSizeUniform->set(osg::Vec2(viewport->width(),viewport->height()));
viewData->_viewportDimensionsUniform->set(osg::Vec4(viewport->x(), viewport->y(), viewport->width(),viewport->height()));
if (viewport->width() != viewData->_colorTexture->getTextureWidth() ||
viewport->height() != viewData->_colorTexture->getTextureHeight())