最近研究了下FPS(Frame Per Second。不是是射击游戏!!!)。总结了两个限制fps的方法。
这里假定fps=60 1/fps = 15ms
部分代码如下
</pre>1.每次都执行画面渲染,游戏逻辑分析,当全部执行完毕后检测花费时间是否大于15ms,小于则delay。大于则跳过<p></p><p>部分代码</p><p><pre name="code" class="cpp">while(Director::getInstance()->isRunning())
{
//执行画面渲染和逻辑判断
Director::getInstance()->update();
if(getCurrentRunTime() - startTime < 15)
delay(getCurrentRunTime()-startTime);
startTime = getCurrentRunTime();
}
2.计算好下次循环时间,如果小于则跳过,如果大于等于后渲染。
while(Director::getInstance()->isRunning())
{
if(getCurrentTime() > nextTime)
{
nextTime = getCurrentTime() + 15;
Director::update();
}
}
总感觉这两个很像,要说不一样的地方就是一个用了delay()。另一个没用罢了。硬要说哪个好。这我倒是不知道。两个的含义都是一样的。我这里倒是强行分开。。。