Rembrandt: Restore rendering stats
intercept first change in stats display to change stats handler camera render order
This commit is contained in:
parent
76efc104c0
commit
ec4b006c08
3 changed files with 20 additions and 5 deletions
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue