<div dir="ltr"><div><div><div><div><div>Hi Tom,<br><br></div>I haven't ever tried to mix TextureBuffer with PagedLOD so can't comment on the specific of this usage case.<br><br></div>General comments that might help give you an idea of how things works:<br><br></div> 1) The OSG can only release GL resources from a graphics thread, so if you manually call releaseGLObjects() what actually happens internally is that the GL objects<br></div>      associated with that scene graph object are released from that scene graph object to a cache of GL objects to be deleted by the appropriate graphics thread. <br></div><div><br></div><div>  2) The OSG will check these "to be deleted" GL object caches and flush them on each frame.  There are rules to this mechanism - the rules are specific to each type</div><div>      of GL object.  In general the graphics thread will delete GL objects for an allocated time period, if this time period is exceeded then it stops deleting the GL objects</div><div>      leaving them for the next frame.  Some GL object types can be reused by new scene graph elements so this cache might be maintained at a given size, texture <br></div><div>      vertex buffer objects are examples of this - reusing no longer used GL objects is far more efficient than deleting GL objecst and then recreating them.<br></div><div><br></div><div>  3) The DatabasePager works with PagedLOD to load balance, avoiding deleting of subgraphs and GL objects where possible, instead aiming to keep a defined amount</div><div>      of scene graph and GL objects in memory to be reused, whilst avoiding exceeding GPU and main memory limits.  <br></div><div><br></div><div>This is just skimming the surface on how all the various parts work together, it's huge topic, discussed lots of the OSG mailing list/forum over the years so please have a look through the archives on DatagbasePager/IncrementalCompileOperation and the GL object caches.  I'm afraid there is lot to take in because of the just how much work has to go in to making a paging mechanism, work robustly and hit a solid 60Hz with big databases.<br></div><div><br></div><div>With your use of the TextureBuffer being something I haven't personally worked on, and how you've deployed it in your application means that I can't provide much specific advice.   It could be a bug with TextureBuffer, it could be that your setting up PagedLOD and the rest of the scene graph with way too high of complexity subgraphs such that it blows the memory of your system.  The OSG defaults try avoid this but you are doing enough custom stuff that these may not help you, but might hinder you.<br></div><div><br></div><div>Robert.<br></div><div><br></div><div>  <br></div><div><br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 29 September 2017 at 12:25, Tom Marsland <span dir="ltr"><<a href="mailto:tom@appsincadd.co.uk" target="_blank">tom@appsincadd.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I've set up a system using PagedLOD derived classes and the TextureBuffer class with draw instancing to render large point clouds stored on disk.<br>
<br>
Everything works fine to start with but I've noticed the gpu memory increasing as I zoom in and out, unloading and reloading the PagedLOD nodes and corresponding texture buffers. Eventually, the GPU memory gets full and it slows down a lot as it starts using system memory.<br>
<br>
It looks like the memory on the GPU allocated to the texture buffers is not freed up, which would be fine if it got cached and reused but it doesn't look like this is happening.<br>
<br>
I have spent a day or so looking at the source code for the texture classes and trying to manually clear the memory but am now a bit stuck! I figured that calling releaseGLObjects on the Geometry node or the TextureBuffer should clear the data but neither seems to have any effect.<br>
<br>
Does anyone have any ideas?<br>
Thanks in advance!<br>
<br>
Tom<br>
<br>
------------------<br>
Read this topic online here:<br>
<a href="http://forum.openscenegraph.org/viewtopic.php?p=72078#72078" rel="noreferrer" target="_blank">http://forum.openscenegraph.<wbr>org/viewtopic.php?p=72078#<wbr>72078</a><br>
<br>
<br>
<br>
<br>
<br>
______________________________<wbr>_________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.<wbr>openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.<wbr>org/listinfo.cgi/osg-users-<wbr>openscenegraph.org</a><br>
</blockquote></div><br></div>