Added support for handling viewports with offset origins, and with it split stereo.
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user