Cocos2d-x3.2游戏的核心循环在Application,如何处理FPS不稳

Cocos2d-x3.2游戏的核心循环在Application,如何处理FPS不稳,第1张

概述今天天气很阴,马上要下雨了,陈吃早点功夫写点东西, 一场秋雨一场寒,十场秋雨要穿棉,各位从今往后多穿点 int Application::run() {     if(!applicationDidFinishLaunching())     {         return 1;     }          long lastTime = 0L;     long curTime = 0L;

今天天气很阴,马上要下雨了,陈吃早点功夫写点东西,

一场秋雨一场寒,十场秋雨要穿棉,各位从今往后多穿点

intApplication::run()

{

if(!applicationDIDFinishLaunching())

{

return1;

}

longlastTime =0L;

longcurTime =0L;

autodirector =Director::getInstance();

autoglvIEw = director->getopenGLVIEw();

// Retain glvIEw to avoID glvIEw being released in the while loop

glvIEw->retain();

//看到了吗,其实所有游戏就在这个循环中

while(!glvIEw->windowshouldClose()) //如果没退出,比如用户按下了home 就退出了

{

lastTime =getCurrentMillSecond(); //获取当前系统时间

director->mainLoop(); //1.处理游戏绘图和游戏逻辑

glvIEw->pollEvents(); //2.处理游戏交互

curTime =getCurrentMillSecond(); //3.以上1.2必定要消耗一定的时间而且动画和怪物越多可能耗时越大所以curTime - lastTime就是这次计算消耗的时间

if(curTime - lastTime <_animationInterval)//如果curTime - lastTime <_animationInterval

//说明在60/1秒内完成了这一帧的计算再让cup sleep FPS剩下时间来保证帧率的稳定

{

usleep(static_cast<useconds_t>((_animationInterval- curTime + lastTime)*1000));

}

/////////如果想知道游戏中是否有不稳定如何呢? 加入如下代码

else

{

//........

}

}

/////////////////你明白了吗 亲

/* Only work on Desktop

* Director::mainLoop is really one frame logic

* when we want to close the window,we should call Director::end();

* then call Director::mainLoop to do release of internal resources

*/

if(glvIEw->isOpenglready())

{

director->end();

director->mainLoop();

}

glvIEw->release();

return0;

}


voIDApplication::setAnimationInterval(doubleinterval)

{

_animationInterval= interval*1000.0f;

}

总结

以上是内存溢出为你收集整理的Cocos2d-x3.2游戏的核心循环在Application,如何处理FPS不稳全部内容,希望文章能够帮你解决Cocos2d-x3.2游戏的核心循环在Application,如何处理FPS不稳所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1043739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存