[osg-users] DatabasePager - A little confused

Simba forrestgump at 126.com
Tue Sep 30 21:22:14 PDT 2008


 
 Hi,
   I'm not sure whether I have understood your problem. But I think that if you
want to use databasepager, you just have to make sure you have "pagedLOD" node in your models. If you do, then just use viewer.setScenedata(model.get()), so the osgViewer::Viewer will automatically do the rest.
   Hope this infomation may help~~~ :)

                                      Simbaforrest

 
 


在2008-10-01 07:06:58,"Alan Ott" <alan at signal11.us> 写道:
>Hello,
>
>After much trying and failing, I think I have a fundamental 
>misunderstanding reagarding the DatabasePager. I have looked for 
>examples or code snippets and it seems that there are none. So here's 
>what I have.
>
>I have a DatabasePager object that I use for terrain. When I need a new 
>chunk of terrain, I call requestNodeFile() with the name of the tile of 
>terrain that I want, and give it a group node to attach it to. Every 
>frame, I check my group nodes to see if they have a piece of terrain 
>attached to them (ie: see if the pager paged in the terrain and attached 
>it to my group). If a new piece of terrain has been loaded, I then 
>perform my initialization on it (lookup switch nodes, etc), and attach 
>it to my main scene. This gets the job done.
>
>The problem now, is that every time a new tile is attached to the main 
>scene, the next frame takes a long time, and I have a missed frame. This 
>has to do with the new tile getting compiled (texture sent to OpenGL, 
>etc) when it's drawn the first time. To overcome this, I want 
>DatabasePager to do this for me, which it seems to be able to support, 
>but everything I try doesn't work in one way or another. I have 
>something like the following (roughly):
>
>// Set up the pager
>pager = osgDB::DatabasePager::create();
>pager->setCompileGLObjectsForContextID (0, true);
>pager->setDoPreCompile(true);
>...
>
>// My composite viewer
>osgViewer::CompositeViewer *viewer = new osgViewer::CompositeViewer;
>....
>
>// Then for each View I have something like this.
>view = new osgViewer::View;
>view->setSceneData(root.get());
>view->getScene()->setDatabasePager(pager);
>
>So in this case, only what gets requested the first frame (before the 
>first draw) gets paged in. Anything requested after that never gets 
>loaded. If I take out the call to setCompileGLObjectsForContextID(), of 
>course, no precompiling happens. Other things happen if I take out the 
>getScene()->setDatabasePager().
>
> From some of the code regarding PagedLOD's, I get the feeling I might 
>be going about this the wrong way entirely, and possibly using 
>DatabasePager in a way in which it was not designed.
>
>So I guess my question is, does anyone have anything they can tell me 
>about how to use this class? Maybe some code snippets? Anything at all 
>would help. I've spent a lot of time searching online and digging 
>through the code, so if I've missed something obvious, please go easy :)
>
>Alan.
>
>_______________________________________________
>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/20081001/f35c44b9/attachment-0003.htm>


More information about the osg-users mailing list