Initial on screen stats support
This commit is contained in:
@@ -74,7 +74,7 @@ bool Stats::getAttribute(int frameNumber, const std::string& attributeName, doub
|
||||
|
||||
const AttributeMap& attributeMap = _attributeMapList[index];
|
||||
AttributeMap::const_iterator itr = attributeMap.find(attributeName);
|
||||
if (itr != attributeMap.end()) return false;
|
||||
if (itr == attributeMap.end()) return false;
|
||||
|
||||
value = itr->second;
|
||||
return true;
|
||||
|
||||
@@ -53,6 +53,15 @@ View::~View()
|
||||
}
|
||||
|
||||
|
||||
void View::setCamera(osg::Camera* camera)
|
||||
{
|
||||
if (_camera.valid()) _camera->setView(0);
|
||||
|
||||
_camera = camera;
|
||||
|
||||
if (_camera.valid()) _camera->setView(this);
|
||||
}
|
||||
|
||||
void View::updateSlaves()
|
||||
{
|
||||
for(unsigned int i=0; i<_slaves.size(); ++i)
|
||||
|
||||
@@ -477,6 +477,8 @@ osg::Matrixd SceneView::computeRightEyeViewImplementation(const osg::Matrixd& vi
|
||||
|
||||
void SceneView::cull()
|
||||
{
|
||||
if (_camera->getNodeMask()==0) return;
|
||||
|
||||
_renderInfo.setView(_camera->getView());
|
||||
|
||||
// update the active uniforms
|
||||
@@ -693,7 +695,7 @@ void SceneView::cullStage(const osg::Matrixd& projection,const osg::Matrixd& mod
|
||||
|
||||
renderStage->setViewport(getViewport());
|
||||
renderStage->setClearColor(getClearColor());
|
||||
|
||||
renderStage->setClearMask(_camera->getClearMask());
|
||||
|
||||
switch(_lightingMode)
|
||||
{
|
||||
@@ -812,6 +814,7 @@ void SceneView::flushDeletedGLObjects(double& availableTime)
|
||||
|
||||
void SceneView::draw()
|
||||
{
|
||||
if (_camera->getNodeMask()==0) return;
|
||||
|
||||
osg::State* state = _renderInfo.getState();
|
||||
|
||||
|
||||
@@ -533,6 +533,57 @@ struct CompositeViewerRenderingOperation : public osg::GraphicsOperation
|
||||
|
||||
void CompositeViewer::setUpRenderingSupport()
|
||||
{
|
||||
#if 1
|
||||
_cameraSceneViewMap.clear();
|
||||
|
||||
Contexts contexts;
|
||||
getContexts(contexts);
|
||||
|
||||
osg::FrameStamp* frameStamp = getFrameStamp();
|
||||
|
||||
for(Contexts::iterator gcitr = contexts.begin();
|
||||
gcitr != contexts.end();
|
||||
++gcitr)
|
||||
{
|
||||
(*gcitr)->removeAllOperations();
|
||||
|
||||
osg::GraphicsContext* gc = *gcitr;
|
||||
osg::GraphicsContext::Cameras& cameras = gc->getCameras();
|
||||
osg::State* state = gc->getState();
|
||||
|
||||
for(osg::GraphicsContext::Cameras::iterator citr = cameras.begin();
|
||||
citr != cameras.end();
|
||||
++citr)
|
||||
{
|
||||
osg::Camera* camera = *citr;
|
||||
osgViewer::View* view = dynamic_cast<osgViewer::View*>(camera->getView());
|
||||
osgViewer::Scene* scene = view ? view->getScene() : 0;
|
||||
|
||||
osg::DisplaySettings* ds = view ? view->getDisplaySettings() : 0;
|
||||
if (!ds) ds = osg::DisplaySettings::instance();
|
||||
|
||||
osgDB::DatabasePager* dp = scene ? scene->getDatabasePager() : 0;
|
||||
|
||||
camera->setStats(new osg::Stats("Camera"));
|
||||
|
||||
osgUtil::SceneView* sceneView = new osgUtil::SceneView;
|
||||
_cameraSceneViewMap[camera] = sceneView;
|
||||
|
||||
sceneView->setGlobalStateSet(view ? view->getCamera()->getStateSet() : 0);
|
||||
sceneView->setDefaults();
|
||||
sceneView->setDisplaySettings(ds);
|
||||
sceneView->setCamera(camera);
|
||||
sceneView->setState(state);
|
||||
sceneView->setFrameStamp(frameStamp);
|
||||
|
||||
if (dp) dp->setCompileGLObjectsForContextID(state->getContextID(), true);
|
||||
|
||||
gc->add(new CompositeViewerRenderingOperation(sceneView, dp));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
osg::FrameStamp* frameStamp = getFrameStamp();
|
||||
|
||||
// what should we do with the old sceneViews?
|
||||
@@ -549,8 +600,6 @@ void CompositeViewer::setUpRenderingSupport()
|
||||
(*citr)->removeAllOperations();
|
||||
}
|
||||
|
||||
|
||||
|
||||
for(Views::iterator itr = _views.begin();
|
||||
itr != _views.end();
|
||||
++itr)
|
||||
@@ -601,7 +650,7 @@ void CompositeViewer::setUpRenderingSupport()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -533,28 +533,72 @@ struct ViewerRenderingOperation : public osg::GraphicsOperation
|
||||
|
||||
void Viewer::setUpRenderingSupport()
|
||||
{
|
||||
osg::FrameStamp* frameStamp = getFrameStamp();
|
||||
|
||||
// what should we do with the old sceneViews?
|
||||
#if 1
|
||||
_cameraSceneViewMap.clear();
|
||||
|
||||
Contexts contexts;
|
||||
getContexts(contexts);
|
||||
|
||||
// clear out all the previously assigned operations
|
||||
for(Contexts::iterator citr = contexts.begin();
|
||||
citr != contexts.end();
|
||||
++citr)
|
||||
{
|
||||
(*citr)->removeAllOperations();
|
||||
}
|
||||
|
||||
|
||||
osg::FrameStamp* frameStamp = getFrameStamp();
|
||||
osg::DisplaySettings* ds = _displaySettings.valid() ? _displaySettings.get() : osg::DisplaySettings::instance();
|
||||
osgDB::DatabasePager* dp = _scene.valid() ? _scene->getDatabasePager() : 0;
|
||||
|
||||
for(Contexts::iterator gcitr = contexts.begin();
|
||||
gcitr != contexts.end();
|
||||
++gcitr)
|
||||
{
|
||||
(*gcitr)->removeAllOperations();
|
||||
|
||||
osg::GraphicsContext* gc = *gcitr;
|
||||
osg::GraphicsContext::Cameras& cameras = gc->getCameras();
|
||||
osg::State* state = gc->getState();
|
||||
|
||||
for(osg::GraphicsContext::Cameras::iterator citr = cameras.begin();
|
||||
citr != cameras.end();
|
||||
++citr)
|
||||
{
|
||||
osg::Camera* camera = *citr;
|
||||
|
||||
camera->setStats(new osg::Stats("Camera"));
|
||||
|
||||
osgUtil::SceneView* sceneView = new osgUtil::SceneView;
|
||||
_cameraSceneViewMap[camera] = sceneView;
|
||||
|
||||
sceneView->setGlobalStateSet(_camera->getStateSet());
|
||||
sceneView->setDefaults();
|
||||
sceneView->setDisplaySettings(ds);
|
||||
sceneView->setCamera(camera);
|
||||
sceneView->setState(state);
|
||||
sceneView->setFrameStamp(frameStamp);
|
||||
|
||||
if (dp) dp->setCompileGLObjectsForContextID(state->getContextID(), true);
|
||||
|
||||
gc->add(new ViewerRenderingOperation(sceneView, dp));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
_cameraSceneViewMap.clear();
|
||||
|
||||
Contexts contexts;
|
||||
getContexts(contexts);
|
||||
|
||||
osg::FrameStamp* frameStamp = getFrameStamp();
|
||||
osg::DisplaySettings* ds = _displaySettings.valid() ? _displaySettings.get() : osg::DisplaySettings::instance();
|
||||
osgDB::DatabasePager* dp = _scene.valid() ? _scene->getDatabasePager() : 0;
|
||||
|
||||
// clear out all the previously assigned operations
|
||||
for(Contexts::iterator gcitr = contexts.begin();
|
||||
gcitr != contexts.end();
|
||||
++gcitr)
|
||||
{
|
||||
(*gcitr)->removeAllOperations();
|
||||
}
|
||||
|
||||
if (_camera.valid() && _camera->getGraphicsContext())
|
||||
{
|
||||
_camera->setStats(new osg::Stats("Viewer"));
|
||||
_camera->setStats(new osg::Stats("Camera"));
|
||||
|
||||
osgUtil::SceneView* sceneView = new osgUtil::SceneView;
|
||||
_cameraSceneViewMap[_camera] = sceneView;
|
||||
@@ -595,6 +639,7 @@ void Viewer::setUpRenderingSupport()
|
||||
slave._camera->getGraphicsContext()->add(new ViewerRenderingOperation(sceneView, dp));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user