6.Direct2D 捕鱼游戏开发-计时器对象ticker.h的封装

环境:

编辑器:VS2015

系统:win10 专业版

碰撞:aabb obb盒模型(obb采用分离轴进行判断)

渲染:direct2d

相关观念说明:

最优频率:渲染场景的时候上一帧和当前帧的时间间隔和显示器的上一帧和当前帧的时间间隔一样那么这就是一个最优的间隔一秒钟内能绘制多少次我们就叫这个为频率(要想完成一个流畅的游戏最优帧是不可少的)

计时器:能够周期执行某一方法的一种对象

fps:每秒中填充图像的帧数(帧/秒)

封装思路:

方法说明:

一个启动计时器的方法(start)

一个停止计时器的方法(stop)

一个设置计时器执行周期的方法(setTimmer)

一个新增每一个周期执行函数的方法(addFun)

一个每一次最优帧执行的方法(render)

属性说明:

一个储存当前计时器fps的属性(fps)

一个储存当前计时器执行时间间隔的属性(timmer)

一个储存当前计时器当前最优频率的时间间隔(msTime)

一个储存了上一次执行方法的时间的属性(oldTimmer)

一个当前帧的当前时间的属性(newTimmer)

计时器的id(id)

一个储存计时器是否启动的属性(started)

一个储存计时器到期了要执行的方法数组(tickerArr)

调用流程:

我们再窗口循环(窗口循环间隔为最优间隔通过微软的begindraw和enddraw之间)里面调用demoapp对象的render

render方法周期调用了当前demoapp对象的场景对象的render然后在场景对象(action.h)里面调用了场景对象(action.h)拥有的计时器(ticker.h)的render方法

下面看主要代码:

启动计时器的方法:ticker.cpp

我们将计时器对象的started设置为true然后再render里面进行判断

关闭计时器的方法:ticker.cpp

设置计时器时间间隔的方法:ticker.cpp

我们将计时器对象的时间间隔设置为传入的值然后在计时器对象的render方法里面进行判断调用

计时器的render:ticker.cpp

这里我们先判断计时器是否是启动的如果不是我们直接返回

然后将当前时间间隔加上最优帧间隔

然后将当前间隔赋值到我们的计时器对象上

如果当前帧的时间间隔(newTimmer)大于了我们的timmer我们就调用一个周期需要调用的函数方法并将app对象和当前的计时器对象传出去

然后我们对fps进行赋值因为我们的render方法已经是最优帧执行了所以只需要在fpsTimmer大于1000的时候将fps修改为fpsInt的值就算是记录了一次fps的值了

这是我们要做的目标:

项目开源地址:

https://github.com/yinhui1129754/fishing

游戏开发交流群:

859055710

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值