|
本帖最后由 andy1uo 于 2011-5-16 13:07 编辑
我学习OSG不久,所以有问题请教大家!
pagelod里面setRange是设置可视范围的是吧?这个应该是毫无疑问的。问题来了,我做了一个简单的实验,就是这个范围是当前摄像机相对于坐标原点的距离。
那么,在大场景中,用pageload的方法来提高运行效率是对的,但是由于这个距离不是摄像机和物体之间的距离,所以是不是意味着程序在运行时,所显示的节点并不是我们所想要的呢?
我想问一下大家,在pagelod的时候能不能设置某个节点的初始位置,摄像机是不是可以通过和这个平移后的位置进行比较?
代码如下
-
- filename = strFilPath + "Terrain.ive";
- float rang = 5000.0;
- int num = 0;
- int rangBase = 1;
- page->setFileName(num,filename);
- page->setRange(num, rang, 2 * rang*100);
- num++;
-
- // 级数范围
- for (int level = 0; level < 5; level++)
- {
- for(int X = 0; X < rangBase; X++)
- {
- for(int Y = rangBase-1; Y >=0; Y--)
- {
- filename = strFilPath + "Terrain_L";
- //filename.append(atoi(level));
- std::stringstream streamm;
- streamm<<filename<<level<<"_X"<<X<<"_Y"<<Y<<"_XXX.ive";
- streamm>>filename;
- page->setFileName(num, filename);
- if (level == 4)
- {
- page->setRange(num, 0, rang / rangBase);
-
- }else
- {
- page->setRange(num, rang / (rangBase * 2), rang / rangBase);
- }
-
- num++;
- }
- }
- rangBase *= 2;
- }
复制代码
上面是我设置pagelod的代码,这样的设置是否能够起到pagelod真正的功能。还是说还需要别的设置? |
|