From: Frederic Bouvier Date: Mon, 9 Apr 2012 15:41:33 +0000 (+0200) Subject: Rembrandt: Restore rendering stats X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=ec4b006c0870e021560e7afb6e60480ba3bbe9c9;p=flightgear.git Rembrandt: Restore rendering stats intercept first change in stats display to change stats handler camera render order --- diff --git a/src/Main/FGEventHandler.cxx b/src/Main/FGEventHandler.cxx index 936b02fc3..9951c0027 100644 --- a/src/Main/FGEventHandler.cxx +++ b/src/Main/FGEventHandler.cxx @@ -45,7 +45,8 @@ FGEventHandler::FGEventHandler() : currentModifiers(0), resizable(true), mouseWarped(false), - scrollButtonPressed(false) + scrollButtonPressed(false), + changeStatsCameraRenderOrder(false) { using namespace osgGA; statsHandler->setKeyEventTogglesOnScreenStats(displayStatsKey); @@ -364,6 +365,10 @@ void FGEventHandler::handleStats(osgGA::GUIActionAdapter& us) do { statsType = (statsType + 1) % osgViewer::StatsHandler::LAST; statsHandler->handle(*statsEvent, us); + if (changeStatsCameraRenderOrder) { + statsHandler->getCamera()->setRenderOrder(osg::Camera::POST_RENDER, 99999); + changeStatsCameraRenderOrder = false; + } } while (statsType != type); display->setIntValue(statsType); diff --git a/src/Main/FGEventHandler.hxx b/src/Main/FGEventHandler.hxx index 3abea015e..9eed4840f 100644 --- a/src/Main/FGEventHandler.hxx +++ b/src/Main/FGEventHandler.hxx @@ -79,6 +79,11 @@ public: return mouseMotionHandler; } + void setChangeStatsCameraRenderOrder(bool c) + { + changeStatsCameraRenderOrder = c; + } + int getCurrentModifiers() const { return currentModifiers; @@ -114,6 +119,7 @@ protected: bool scrollButtonPressed; int release_keys[128]; void handleStats(osgGA::GUIActionAdapter& us); + bool changeStatsCameraRenderOrder; }; void eventToWindowCoords(const osgGA::GUIEventAdapter* ea, double& x, double& y); diff --git a/src/Main/renderer.cxx b/src/Main/renderer.cxx index 6a200c846..1c6e77bbb 100644 --- a/src/Main/renderer.cxx +++ b/src/Main/renderer.cxx @@ -542,6 +542,10 @@ FGRenderer::init( void ) } _sky->texture_path( texture_path.str() ); + + if (!_classicalRenderer) { + eventHandler->setChangeStatsCameraRenderOrder( true ); + } } void installCullVisitor(Camera* camera) @@ -752,7 +756,7 @@ osg::Camera* FGRenderer::buildDeferredGeometryCamera( flightgear::CameraInfo* in info->addCamera(flightgear::GEOMETRY_CAMERA, camera ); camera->setCullMask( ~simgear::MODELLIGHT_BIT ); - camera->setName( "GeometryCamera" ); + camera->setName( "GeometryC" ); camera->setGraphicsContext( gc ); camera->setCullCallback( new FGDeferredRenderingCameraCullCallback( flightgear::GEOMETRY_CAMERA, info ) ); camera->setClearMask( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); @@ -815,7 +819,7 @@ osg::Camera* FGRenderer::buildDeferredShadowCamera( flightgear::CameraInfo* info osg::Camera* mainShadowCamera = new osg::Camera; info->addCamera(flightgear::SHADOW_CAMERA, mainShadowCamera, 0.0f ); - mainShadowCamera->setName( "ShadowCamera" ); + mainShadowCamera->setName( "ShadowC" ); mainShadowCamera->setClearMask( GL_DEPTH_BUFFER_BIT ); mainShadowCamera->setClearDepth( 1.0 ); mainShadowCamera->setAllowEventFocus(false); @@ -1161,7 +1165,7 @@ osg::Camera* FGRenderer::buildDeferredLightingCamera( flightgear::CameraInfo* in camera->setAllowEventFocus(false); camera->setGraphicsContext(gc); camera->setViewport(new Viewport); - camera->setName("LightingCamera"); + camera->setName("LightingC"); camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF); camera->setRenderOrder(osg::Camera::POST_RENDER, 50); camera->setRenderTargetImplementation( osg::Camera::FRAME_BUFFER_OBJECT ); @@ -1372,7 +1376,7 @@ FGRenderer::buildDeferredPipeline(flightgear::CameraGroup* cgroup, unsigned flag slaveIndex = cgroup->getViewer()->getNumSlaves() - 1; info->getRenderStageInfo(LIGHTING_CAMERA).slaveIndex = slaveIndex; - camera->setName( "DisplayCamera" ); + camera->setName( "DisplayC" ); camera->setCullCallback( new FGDeferredRenderingCameraCullCallback( flightgear::DISPLAY_CAMERA, info ) ); camera->setReferenceFrame(Transform::ABSOLUTE_RF); camera->setAllowEventFocus(false);