【ARToolkit】遮挡标识卡重新显示后切换模型

    上次我们介绍了关于window下的鼠标控制与标识卡结合的函数,这次我们用时间函数。 如果想要在同一张标切换识卡下实现切换另一模型,可以有好几种方法,其中最重要的一点就是如何有个标准来切换。比如说,我们通过固定时间的改变,设置一个标识位,每隔多少秒后,标识位就发生变化,相应的,针对变化的标识位,我们设置了不同的模型来对应。或者利用遮挡多少秒这个标准来作为是否切换模型。这次我们要给大家讲的是利用遮挡时间作为标准来切换模型的这一种。

  我们既然要利用时间,那么相应的时间函数必不可少,ARToolkit语言主要是用c/c++语言编写,本次,我们获取时间的函数在c/c++中为time()和clock().

time()函数

time_t是一个long int类型 。是一种时间的数据类型

time()函数的在代码中的标准写法是time_t time(time_t *seconds)。

给大家看一个关于time的用法

上面的timer=NULL时得到机器日历时间,time主要用于获取当前计算机的标准时间,单位是秒,

clock()函数

clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:

clock_t clock(void) ;

简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从"开启这个程序进程"到"程序中调用clock()函数"时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时间的数据类型。

clock函数的单位是毫秒。

下面给大家介绍主体函数

我们的想法是通过标识卡被遮挡的时间,用clock()函数获取从开启这个进程到执行这个进程的时间,通过time函数下面的time_t来设置一个初始时间为0的数据类型值。当标识卡被遮挡时,进程被打断,此时clock()函数获取了当前开启这个进程到执行这个进程的时间。当遮挡消失后,进程再次被执行,此时我们又通过clock()函数获取时间,如果遮挡消失的慢的话,获取进程的时间就长。我们用time_t来保存上一个进程执行的时间,此处所说的进程执行时间为开启这个进程到执行这个进程的时间。

在开头声明函数,其中state函数用于使标志量在0、1这2种状态之间变换,这次我们只在两种模型间实现变换。

在draw函数里面定义标志位,和保存clock函数上次所用时间。

clock()表示从程序启动到当前时刻所经历的CPU时钟周期数,如果clock()与dwLast(初始时间为0,上次进程执行所用时间)的时间差大于100,那么就将标志位改变,如果标志位为0,就绘制球体,如果标志位不为0,绘制正方体。

将上次的clock执行时间赋给dwLast。

此次我们所用的代码均在simpleTest的基础上实现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值