[osg-users] how to release loaded model

su hu tttsuhu at gmail.com
Thu Jul 24 02:45:25 PDT 2008


Hi all.

I need to release loaded model and reload other model. I did as follow:


osgViewer::Viewer    Viewer;
osg::ref_ptr<osg::Group> root           =  new osg::Group;
osg::ref_ptr<osg::Group> ModelRoot =  new osg::Group;
osg::ref_ptr<osg::Node> loadedModel;
...
Viewer.setSceneData(root.get());
root->addChild(ModelRoot.get());
...

//in frame loop
.....
switch(CMD)
{
    case LOAD_SCENE:
    {

            loadedModel = osgDB::readNodeFile(CMD_SceneFileName);

            if (loadedModel.valid())
            {
                ModelRoot->addChild(loadedModel.get());
            }
            break;
    }
    case RELEASE_SCENE:
    {
            if(ModelRoot.valid())
            {
                ModelRoot->removeChildren(0,ModelRoot->getNumChildren());
            }

            loadedModel.release();

            break;
    }

}

...

The loadedModel is added to ModelRoot and is not added to any other group.

Models could be loaded and "released". But I found used memory was not
reduced at all after "RELEASE_SCENE" was executed.  After loading and
releasing several times, used memory is more than 1GB and program is
freezed.  I want to know the reason and how to improve it.

Much appreciation to any reply.


Regards,

Su Hu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20080724/61f4d0bf/attachment-0002.htm>


More information about the osg-users mailing list