想请教一下如何做到精确定时
比如现在我用schedule去定时一个函数,每0.05秒执行一次,但发现误差好大,1秒内被执行函数并没有精确被调用20次,而是16次左右
然后我程序的渲染次数15次,感觉不算多吧,那些大型的游戏是如何做到精确定时的呢?
谢谢
想请教一下如何做到精确定时
比如现在我用schedule去定时一个函数,每0.05秒执行一次,但发现误差好大,1秒内被执行函数并没有精确被调用20次,而是16次左右
然后我程序的渲染次数15次,感觉不算多吧,那些大型的游戏是如何做到精确定时的呢?
谢谢
能将你那部分代码放上来看看吗?
你帧率必须大于20时,因为定时器是每帧调一次
自己计经过时间。每次调用加dt。
schedule(schedule_selector(GameScene::timeBoardSchedule), 0.05f);
void GameScene::timeBoardSchedule(float interval) {
timeBoard->updateTime();//这个函数没执行二十多条语句
}
然后我设置的帧率是50,然后显示的帧率是48到49+波动
怎么记得看过一个教学视频说那个dt参数不是会自动修正偏差?
要自己按dt修正?
dt,这是个浮点数本身就存在精度的问题
schedule(schedule_selector(GameScene::timeBoardSchedule), 0.05f);
好了,现在直接用c++的线程做了,比schedule可控性好多了