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

@@ -12,6 +12,7 @@
*/
#include <osgViewer/ViewerEventHandlers>
#include <osgViewer/Renderer>
#include <osg/PolygonMode>
@@ -26,6 +27,7 @@ HelpHandler::HelpHandler(osg::ApplicationUsage* au):
_initialized(false)
{
_camera = new osg::Camera;
_camera->setRenderer(new Renderer(_camera.get()));
}
@@ -76,14 +78,20 @@ bool HelpHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapt
void HelpHandler::setUpHUDCamera(osgViewer::Viewer* viewer)
{
osgViewer::Viewer::Windows windows;
viewer->getWindows(windows);
osgViewer::GraphicsWindow* window = dynamic_cast<osgViewer::GraphicsWindow*>(_camera->getGraphicsContext());
if (windows.empty()) return;
if (!window)
{
osgViewer::Viewer::Windows windows;
viewer->getWindows(windows);
osgViewer::GraphicsWindow* window = windows.front();
if (windows.empty()) return;
window = windows.front();
_camera->setGraphicsContext(window);
}
_camera = new osg::Camera;
_camera->setGraphicsContext(window);
_camera->setViewport(0, 0, window->getTraits()->width, window->getTraits()->height);
@@ -94,8 +102,6 @@ void HelpHandler::setUpHUDCamera(osgViewer::Viewer* viewer)
// only clear the depth buffer
_camera->setClearMask(0);
viewer->setUpRenderingSupport();
_initialized = true;
}