From 2517c1e77e6bd86a343b30fc0540c5766c198ccd Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Mon, 24 Nov 2008 16:02:20 +0000 Subject: [PATCH] Improved the set of the master + slave cameras --- examples/osgsidebyside/osgsidebyside.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/examples/osgsidebyside/osgsidebyside.cpp b/examples/osgsidebyside/osgsidebyside.cpp index c0f77bcf5..eb6ea3476 100644 --- a/examples/osgsidebyside/osgsidebyside.cpp +++ b/examples/osgsidebyside/osgsidebyside.cpp @@ -166,6 +166,8 @@ void singleWindowSideBySideCameras(osgViewer::Viewer& viewer) unsigned int width, height; wsi->getScreenResolution(osg::GraphicsContext::ScreenIdentifier(0), width, height); + + // Not fullscreen width /= 2; height /= 2; @@ -194,19 +196,16 @@ void singleWindowSideBySideCameras(osgViewer::Viewer& viewer) osg::notify(osg::NOTICE)<<" GraphicsWindow has not been created successfully."<getProjectionMatrixAsPerspective(fovy, aspectRatio, zNear, zFar); - master->setProjectionResizePolicy(osg::Camera::VERTICAL); - fovy = 90; - aspectRatio = 1; - master->setProjectionMatrixAsPerspective(fovy, aspectRatio, zNear, zFar); - double h = osg::absolute(tan(osg::DegreesToRadians(fovy / 2))); - double w = h * aspectRatio; - double fovx = osg::absolute(osg::RadiansToDegrees(atan(w)) * 2); + // reset this for the actual apsect ratio of out created window + double windowAspectRatio = double(width)/double(height); + master->setProjectionMatrixAsPerspective(fovy, windowAspectRatio, 1.0, 10000.0); master->setName("MasterCam"); @@ -218,7 +217,7 @@ void singleWindowSideBySideCameras(osgViewer::Viewer& viewer) GLenum buffer = traits->doubleBuffer ? GL_BACK : GL_FRONT; camera->setDrawBuffer(buffer); camera->setReadBuffer(buffer); - viewer.addSlave(camera.get(), osg::Matrixd(), osg::Matrixd()); + viewer.addSlave(camera.get(), osg::Matrixd::scale(1.0,0.5,1.0), osg::Matrixd()); camera = new osg::Camera; camera->setCullMask(2); @@ -228,7 +227,7 @@ void singleWindowSideBySideCameras(osgViewer::Viewer& viewer) buffer = traits->doubleBuffer ? GL_BACK : GL_FRONT; camera->setDrawBuffer(buffer); camera->setReadBuffer(buffer); - viewer.addSlave(camera.get(), osg::Matrixd(), osg::Matrixd()); + viewer.addSlave(camera.get(), osg::Matrixd::scale(1.0,0.5,1.0), osg::Matrixd()); } int main( int argc, char **argv )