Added a concrete osg::DeleteHandler implementation which provides support for
retain objects for several frames before deleting them. Also added RenderStageCache into CullVistor.cpp that is used for handling RTT osg::Camera's that are being used in double buffered SceneView usage.
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
*/
|
||||
|
||||
#include <osg/GLExtensions>
|
||||
#include <osg/DeleteHandler>
|
||||
#include <osgUtil/GLObjectsVisitor>
|
||||
#include <osgGA/TrackballManipulator>
|
||||
#include <osgViewer/Viewer>
|
||||
@@ -20,6 +21,7 @@
|
||||
|
||||
using namespace osgViewer;
|
||||
|
||||
|
||||
class ViewerQuerySupport
|
||||
{
|
||||
public:
|
||||
@@ -544,6 +546,8 @@ Viewer::Viewer():
|
||||
_eventVisitor->setActionAdapter(this);
|
||||
|
||||
setStats(new osg::Stats("Viewer"));
|
||||
|
||||
osg::Referenced::setDeleteHandler(new osg::DeleteHandler(2));
|
||||
}
|
||||
|
||||
Viewer::~Viewer()
|
||||
@@ -569,6 +573,11 @@ Viewer::~Viewer()
|
||||
(*citr)->close();
|
||||
}
|
||||
|
||||
if (osg::Referenced::getDeleteHandler())
|
||||
{
|
||||
osg::Referenced::getDeleteHandler()->setNumFramesToRetainObjects(0);
|
||||
osg::Referenced::getDeleteHandler()->flushAll();
|
||||
}
|
||||
//osg::notify(osg::NOTICE)<<"finish Viewer::~Viewer()"<<std::endl;
|
||||
|
||||
}
|
||||
@@ -1350,6 +1359,13 @@ void Viewer::advance(double simulationTime)
|
||||
// update current frames stats
|
||||
getStats()->setAttribute(_frameStamp->getFrameNumber(), "Reference time", _frameStamp->getReferenceTime());
|
||||
}
|
||||
|
||||
if (osg::Referenced::getDeleteHandler())
|
||||
{
|
||||
osg::Referenced::getDeleteHandler()->flush();
|
||||
osg::Referenced::getDeleteHandler()->setFrameNumber(_frameStamp->getFrameNumber());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Viewer::eventTraversal()
|
||||
|
||||
Reference in New Issue
Block a user