查看: 1515|回复: 7

如何在事件回调里计算帧频

[复制链接]

该用户从未签到

发表于 2014-7-15 17:47:40 | 显示全部楼层 |阅读模式
osg里面帧频是如何计算的,要用到哪些函数?给点参考例程把

该用户从未签到

发表于 2014-7-16 15:23:46 | 显示全部楼层
帧速率 = 时间段内帧数 / 时间间隔
不需要任何函数,做个计数器 + 计时器,按照公式算就可以了
当然,osg已经有statHandler实现了

该用户从未签到

发表于 2014-7-16 15:23:50 | 显示全部楼层
帧速率 = 时间段内帧数 / 时间间隔
不需要任何函数,做个计数器 + 计时器,按照公式算就可以了
当然,osg已经有statHandler实现了

该用户从未签到

 楼主| 发表于 2014-7-17 15:25:08 | 显示全部楼层
gis_wudi 发表于 2014-7-16 15:23
帧速率 = 时间段内帧数 / 时间间隔
不需要任何函数,做个计数器 + 计时器,按照公式算就可以了
当然,os ...

能详细说一下,用的是那几个函数吗,我查了一下这个类,可是没有函数的使用说明啊,不得不感叹osg的帮助文档真是个垃圾

该用户从未签到

发表于 2014-7-17 18:19:11 | 显示全部楼层
源码就是最好的帮助文档,如果只是记录帧速率,完全可以自己做,正如我上面说的
如果要用osg已有的,无非就是timer类获取时间间隔,FrameStamp中获取frame number

该用户从未签到

 楼主| 发表于 2014-7-18 08:12:18 | 显示全部楼层
  1. while( !viewer.done() )
  2.         {
  3.                 osg::FrameStamp * fs=viewer.getFrameStamp();
  4.                 double rft=fs->getReferenceTime();
  5.                 double t =fs->getSimulationTime();
  6.                 unsigned int num = fs->getFrameNumber();
  7.                 std::cout<<rft<<std::endl;
  8.                 std::cout<<t<<std::endl;
  9.                 std::cout<<num<<std::endl;
  10.                 std::cout<<num/rft<<std::endl;
  11.                 viewer.frame();
  12.         }
复制代码

您的意思是这样写吧,这样我会,想请问一下,当帧数过多时超出了unsigned int 的范围怎么办?另外Simulationtime和Referencetime有什么区别

该用户从未签到

发表于 2014-7-31 11:26:47 | 显示全部楼层
帧数超过uint这件事,如果您不负责造火箭的话可以不用想。。40亿这个数按照60fps换算应该是持续800多天。Simulation Time是一个用户可以自行设置的模拟时间(不设置的话就等于Reference Time),设置方法就是给frame函数传递参数;Reference Time是系统实际运行的时间

该用户从未签到

发表于 2014-7-31 16:28:58 | 显示全部楼层
帧数超过uint这件事,如果您不负责造火箭的话可以不用想。。40亿这个数按照60fps换算应该是持续800多天。Simulation Time是一个用户可以自行设置的模拟时间(不设置的话就等于Reference Time),设置方法就是给frame函数传递参数;Reference Time是系统实际运行的时间

Array神人,这都算明白了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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