查看: 3190|回复: 8

请教osg中的osg::timer是如何使用的?

[复制链接]

该用户从未签到

发表于 2009-9-16 10:31:22 | 显示全部楼层 |阅读模式
osg::Timer_t start_tick = osg::Timer::instance()->tick();

不太明白是什么意思?

比如:5秒执行一次的功能?
SetTimer(100,5000,NULL);

该用户从未签到

发表于 2009-9-16 10:50:36 | 显示全部楼层
OSG中的Timer::tick()只是用来记录一个时刻值,然后可以用来保存当前时刻或者计算某一功能的运行时间;它不具备定时执行事件的能力

该用户从未签到

 楼主| 发表于 2009-9-16 10:58:22 | 显示全部楼层
谢谢,arry。那如何想实现:定期检查场景数据更新如何实现的呢?

该用户从未签到

发表于 2009-9-16 11:09:52 | 显示全部楼层
我也遇到了这样的困惑,我想通过时间对节点进行回调,是不是得写一个自己的时间回调事件让osg进行回调呢?

该用户从未签到

发表于 2009-9-16 12:16:15 | 显示全部楼层
最简单的方法是使用更新回调,获取时间戳nv.getFrameStamp(),然后根据时刻值或者当前帧数来执行事件。
如果需要特别精确的时间控制的话,建议自己编写线程来实现

该用户从未签到

 楼主| 发表于 2009-9-16 12:18:43 | 显示全部楼层
本帖最后由 ydwcowboy 于 2009-9-16 12:23 编辑

版主可不可以举个例子来说明?更新回调是如何回调的?它在什么事件触发后会更新回调?

该用户从未签到

发表于 2009-9-16 12:37:10 | 显示全部楼层
每帧都会执行节点的更新回调,如果您对UpdateCallback还不了解的话,不妨先看一看《快速入门指导》等入门教程和例子

该用户从未签到

 楼主| 发表于 2009-9-16 12:55:15 | 显示全部楼层
我能所知的是两种方式:

1、在初始化的时候,直接将各种状态,渲染信息,然后mViewer->realize();

2、交互事件中更新节点信息。

3、如何实现除上述两更新外的,按一定时间,自动更新,或者说可不可以手动更新某个节点,不在交互事件中完成。

该用户从未签到

发表于 2009-9-16 13:00:32 | 显示全部楼层
请先了解一下UpdateCallback
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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