查看: 1464|回复: 9

osg新人关于释放节点的问题

[复制链接]

该用户从未签到

发表于 2011-5-10 08:55:49 | 显示全部楼层 |阅读模式
在做一个交通仿真的程序,由于每一辆车都需要做一个回调,发现路面加入10辆车之后帧速就不到10了,有什么办法能解决渲染速度的问题?还有一个问题,如果通过键盘响应释放掉所有车辆节点的回调应该如何做呢?多谢各位指教

该用户从未签到

发表于 2011-5-10 09:01:51 | 显示全部楼层
速度过慢应该是您自己的代码存在严重的效率问题,取消回调可以通过setUpdateCallback(NULL)

该用户从未签到

 楼主| 发表于 2011-5-10 09:07:37 | 显示全部楼层
回复 2# array

程序的效率问题主要会出现在哪些地方呢?我的车辆都是用如下的方法走的,每加入一辆车帧速就会降10:
         osg::ref_ptr<osg::MatrixTransform>matrixCallback1=new osg::MatrixTransform;
         osg::ref_ptr<osg::AnimationPath>path1=new osg::AnimationPath;
         std::string filename("1.path");
         std::ifstream s(filename.c_str());
         path1->read(s);
         s.close();
         matrixCallback1->setUpdateCallback (new osg::AnimationPathCallback(path1));

该用户从未签到

发表于 2011-5-10 11:10:49 | 显示全部楼层
关注一下。。。

该用户从未签到

发表于 2011-5-10 11:55:26 | 显示全部楼层
你的车模型很复杂么?可以共用一个模型提高效率

该用户从未签到

 楼主| 发表于 2011-5-10 12:33:33 | 显示全部楼层
回复 5# tianxiao888


    模型都是共用的一个车辆模型,所有回调节点在一个group下,不过回调节点下有一个矩阵变换节点进行旋转和缩放

该用户从未签到

 楼主| 发表于 2011-5-10 12:37:16 | 显示全部楼层
回复 2# array

使用setUpdateCallback(NULL)程序直接死掉了...

该用户从未签到

发表于 2011-5-10 16:42:12 | 显示全部楼层
您在什么地方setUpdateCallback(NULL)的?

该用户从未签到

 楼主| 发表于 2011-5-10 17:09:04 | 显示全部楼层
回复 8# array


    做了两个widget的按钮实现添加和移除车辆
mousePush(double,double,osgWidget::WindowManager*wm)
{
   if(按1)
         osg::ref_ptr<osg::MatrixTransform>matrixCallback1=new osg::MatrixTransform;
         osg::ref_ptr<osg::AnimationPath>path1=new osg::AnimationPath;
         std::string filename("1.path");
         std::ifstream s(filename.c_str());
         path1->read(s);
         s.close();
         matrixCallback1->setUpdateCallback (new osg::AnimationPathCallback(path1));
         group->addChild(matrixCallback1);
  if(按2)
         matrixCallback1->setUpdateCallback(NULL);
}
其中matrixCallback1定义成widget的成员变量

该用户从未签到

发表于 2011-5-11 08:28:42 | 显示全部楼层
最安全的做法是在GUIEventHandler中处理节点回调的删除和新建
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表