Addd OsgSceneHandler::s/getCleanUpOnNextFrame() and support for it in the draw() method,

when CleanUpOnNextFrame is enabled the next frame simple deleted OpenGL objects without doing any draw traversal.
This commit is contained in:
Robert Osfield
2005-11-10 11:39:01 +00:00
parent e9c25115fb
commit e8d6df7583
4 changed files with 25 additions and 8 deletions

View File

@@ -736,7 +736,7 @@ void OsgCameraGroup::cleanup_frame()
++itr)
{
(*itr)->getSceneView()->releaseAllGLObjects();
(*itr)->setFlushOfAllDeletedGLObjectsOnNextFrame(true);
(*itr)->setCleanUpOnNextFrame(true);
}
// make sure that the registry all flushes all its texture objects.

View File

@@ -26,6 +26,7 @@ OsgSceneHandler::OsgSceneHandler( osg::DisplaySettings *ds) :
_frameStartTick = 0;
_previousFrameStartTick = 0;
_flushOfAllDeletedGLObjectsOnNextFrame = false;
_cleanUpOnNextFrame = false;
}
void OsgSceneHandler::init()

View File

@@ -45,6 +45,9 @@ BEGIN_OBJECT_REFLECTOR(osgProducer::OsgSceneHandler)
I_Method1(void, setContextID, IN, int, id);
I_Method1(void, setFlushOfAllDeletedGLObjectsOnNextFrame, IN, bool, flag);
I_Method0(bool, getFlushOfAllDeletedGLObjectsOnNextFrame);
I_Method1(void, setCleanUpOnNextFrame, IN, bool, flag);
I_Method0(bool, getCleanUpOnNextFrame);
I_Property(bool, CleanUpOnNextFrame);
I_Property(osgProducer::OsgSceneHandler::Callback *, ClearCallback);
I_WriteOnlyProperty(int, ContextID);
I_Property(osgProducer::OsgSceneHandler::Callback *, CullCallback);