|
本帖最后由 leon 于 2009-8-17 23:31 编辑
情况是这样的:
pagedLod的地形数据,程序中会动态设定每个lod的range。设定的过程:在每帧的update过程中,得到每个LOD的BoundingSphere的半径,将其乘以一个参数(由程序控制),根据得到的数分别设置本LOD和其子LOD的Range。其代码如下:
osg::BoundingSphere _bb = _LOD->computeBound();
float _dist = _PagedLODKen*_bb.radius();
_LOD->setRange(0,_dist,5e+4);
_LOD->setRange(1,0,_dist);
现在的问题是:当所乘的参数(即程序中的_PagedLODKen,只在这里起作用)大于1时,程序所占内存会随着pagedLOD的反复载入(比如某水平视角的camera绕铅锤轴原地360°旋转)而不断增加,直到内存几乎耗尽。若所乘参数小于等于1则完全没有该现象。另外,如果程序运行不牵涉到pagedLOD的反复载入(比如俯视视角下)则也没有内存不断增加的现象。
请教问题可能出在什么地方,怎么试着解决? |
|