Hi Again,

We tried object cache  When Intersection Visitor loads PagedLOD through 
ReadCallback its used in vistor apply method local scope then ref counter drops 
to zero so object cache will also free the object just after it was used. (See 
IntersectionVisitor line 347). 

It looks like we should attach loaded PagedLOD to some parent to prevent object 
cache flush. But IntersectVisitor::ReadCallback does not know the parent. One 
would need to override IntersectVisitor to allow for this. 

On the other hand osgSim::DatabaseCacheReadCallback works like a local 
intersection only cache. DatabasePager does not know anything about it. So 
subsequent read request issued from Cull traversal will actually reload the 
file even if IntersectionVisitor just loaded it.

So we figured out that using both Object cache with 
osgSim::DatabaseCacheReadCallback may do the trick. There is a chance that 
DatabaseCacheReadCallback cache will keep PagedLOD for some time in memory 
making its ref counter non zero what will cause Object cache to keep it as 
well. Finally when Object cache will keep it, there is a chance that next 
DatabasePager request will find it in the cache and will not reload from disk. 
Funny scenario, isn't it ? I wish it was a bit simpler ;-)

Cheers,
Wojtek

  ----- Original Message ----- 
  From: Glenn Waldron 
  To: OpenSceneGraph Users 
  Sent: Wednesday, September 24, 2008 1:53 PM
  Subject: Re: [osg-users] Passing explicitly loaded model to DatabasePagerfor 
expiry management


  On Wed, Sep 24, 2008 at 6:45 AM, Wojciech Lewandowski <[EMAIL PROTECTED]> 
wrote:

    Hi Everyone,

    I have quick question. We have added simple ReadCallback to 
osg::IntersectionVisitor to enforce loading of highest PAgedLODs from our 
terrain.
    We simply call osgDB::readNodeFile( PageLOD_file ). Intersection works, but 
it looks like these files are not stored in any cache nor they are actually 
attached to parent PagedLOD. Is there a way we can add them to DatabasePager 
loaded model list to avoid further loads of the same file ?



  One option is to implement a cache in the ReadCallback itself, as 
demonstrated in osgSim/LineOfSight.cpp.

  Glenn

  -- 
  Glenn Waldron : Pelican Mapping : http://pelicanmapping.com : +1.703.652.4791



------------------------------------------------------------------------------


  _______________________________________________
  osg-users mailing list
  [email protected]
  http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to