Introduce new osgViewer::Renderer class for implementing of the rendering

of cameras in viewers
This commit is contained in:
Robert Osfield
2007-08-02 11:02:47 +00:00
parent 1b36cfc928
commit c346f5b943
27 changed files with 1040 additions and 1137 deletions

View File

@@ -23,19 +23,15 @@ View::View()
setLightingMode(HEADLIGHT);
setCamera(new osg::Camera);
_camera = new osg::Camera;
_camera->setView(this);
#if 1
double height = osg::DisplaySettings::instance()->getScreenHeight();
double width = osg::DisplaySettings::instance()->getScreenWidth();
double distance = osg::DisplaySettings::instance()->getScreenDistance();
double vfov = osg::RadiansToDegrees(atan2(height/2.0f,distance)*2.0);
_camera->setProjectionMatrixAsPerspective( vfov, width/height, 1.0f,10000.0f);
#else
_camera->setProjectionMatrixAsFrustum(-0.325, 0.325, -0.26, 0.26, 1.0f,10000.0f);
#endif
_camera->setClearColor(osg::Vec4f(0.2f, 0.2f, 0.4f, 1.0f));
@@ -107,7 +103,12 @@ void View::setCamera(osg::Camera* camera)
_camera = camera;
if (_camera.valid()) _camera->setView(this);
if (_camera.valid())
{
_camera->setView(this);
_camera->setRenderer(createRenderer(camera));
}
}
void View::updateSlaves()
@@ -145,6 +146,8 @@ bool View::addSlave(osg::Camera* camera, const osg::Matrix& projectionOffset, co
_slaves.push_back(Slave(camera, projectionOffset, viewOffset, useMastersSceneData));
updateSlave(i);
camera->setRenderer(createRenderer(camera));
return true;
}