|
请问osg中如何高效的管理节点。
我现在用一个ref_ptr<group> managerRoot作为管理根节点,存储了一群管理子节点ref_ptr<group> Sub1、Sub2等等,每个子节点下存放了一个叶节点geode(目前只有一个叶节点,以后还计划添加其他内容),叶节点下是一个geometry,画了将近2万个quad。
在绘制时通过ui控制场景更新。
每次更新首先清除场景根节点sceneroot的所有子节点:
sceneroot->removechildren(0,sceneroot->getNumChildren());
然后根据ui选择,动态从管理根节点managerRoot中取出某个子节点(getchild)放入场景的根节点中(addchild)。
这个过程有两个问题:
1是切换过程还是不很流畅,有1秒左右的卡顿;
2是我按照顺序(从0到managerRoot->getNumChildren()-1)将管理根节点的所有子节点在场景中更新一边之后,再次载入第0个节点时,场景就会变得非常卡。
在此诚心请教:1是如何能让节点的切换更加流畅,就算载入过程的延迟不可避免,能否采用手段让他不要干扰到场景的绘制。2是第二个问题产生的原因和解决方案是什么。
另外我感觉现在用的节点管理方法显得很业余很蠢,有没有什么更好的方法来处理我遇到的问题。谢谢。 |
|