Hi All, I've been pretty quiet and the public list/forum through September, keeping my head down developing new functionality for the OSG... and the new functionality I'm pleased to announce today is that we now have a loverly new back-end implementation for texture objects and buffer objects (VertexBufferObject, ElementBufferObjects and PixelBufferObjects's) that provides a set of GL objects pools that enable recycling of both orphaned GL objects and reuse of GL objects that are still attached to the scene graph, but are stale - i.e. haven't been rendered in the last frame.
The benefit the GL object pools provide is that we can scale up the scene graph in main memory without blowing OpenGL driver and GPU memory as we would do without the new pools. This feature also reduces the likely-hood of thrashing of OpenGL driver and GPU memory so that where we might have previously seen frame drops due to memory management we avoid them completely or reduce there impact. The memory pools will come in there own once we scale down the GPU memory size, such as embedded systems, or on desktop/workstation applications where GPU memory can be overflowed due to massive databases being kept in main memory. In the later case this issue is more compounded on some OS's, such as Vista, that limits the amount of memory that OpenGL drivers can allocate, so here it should help make the app more stable (avoid the crashes due to out of memory errors) and faster. So... how to try out the new texture and buffer object pools? First up you'll need to update to the latest OpenScenGraph svn/trunk. Next you'll need to enable the pools by setting the env vars: (example below for bash) export OSG_TEXTURE_POOL_SIZE=100000000 // size in bytes (100Mb) export OSG_BUFFER_OBJECT_POOL_SIZE=200000000 // size in bytes (200Mb) Then run your app with some big data, such a large paged database, you can push the amount of main memory used by enabling the MaxPagedLOD feature in the DatabasePager via: export OSG_MAX_PAGEDLOD=100000 // keep in memory a maximum of 100,000 PagedLOD nodes You can also set these values programmatically via osg::DisplaySettings. A word of warning though, I have almost completely rewritten the way that the backend that drives texture objects and buffer objects, even when you don't enable the texture/buffer object pools, the code managing the GL objects is still completely different. With major changes like this comes the likelihood of regressions. I've been doing a range of tests at my end, but it's still far more limited in scope to what the community will expose the OSG to, so... there you may way see problems that I haven't. The best I can do is endeavor to get them fixed as quickly as possible, just let me know if you see something odd and I we can work together to spot what the underlying problem and squish it. The more testing we can get the quicker we can shape the code up to being release quality. Have fun with it :-) Robert. _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org