[osg-users] how to release loaded model

su hu tttsuhu at gmail.com
Thu Jul 24 03:24:13 PDT 2008


Hi Robert,

I set ref_ptr<> to null. It works well. Thanks a lot.

Best Regards,

Su Hu

2008/7/24 Robert Osfield <robert.osfield at gmail.com>:

> 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
> >
> >
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20080724/09d3dc66/attachment-0003.htm>


More information about the osg-users mailing list