[osg-users] how to release loaded model

Robert Osfield robert.osfield at gmail.com
Thu Jul 24 03:16:27 PDT 2008


Hi Su,

You shouldn't be called ref_ptr.release() in this context, you should
be just setting the ref_ptr<> to null.

ref_ptr::release() is a specialist helper method with does an
unref_noDelete on the referenced object - it deliberately doesn't
delete the object that it's unrefecing.  This functionality is
required for functions that use ref_ptr<> locally but then have to
pass a C* point of the object.

Robert.

On Thu, Jul 24, 2008 at 10:45 AM, su hu <tttsuhu at gmail.com> wrote:
> 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
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>



More information about the osg-users mailing list