cocos2dx 帧数低做的游戏帧数很低,请问为什么

使用Cocos2d-x 3.0开发游戏之后,发现游戏在android手机上发热非常严重,在魅族2上,几乎担心手机会爆炸了~~~采取的一个措施就是降低帧率,因为游戏对于帧率要求不是非常高。
做过cocos2d开发的同学应该都知道在win32平台修改帧率的方式非常简单,就是在AppDelegate.cpp文件中修改:
director-&setAnimationInterval(1.0&/&40);
但是这种修改方式在导出android安卓apk到真机测试的时候,发现左下角的调试信息还是现实60~65帧,完全不受影响,网上搜索之后,发小安卓的修改需要修改cocos2dx-x生成的java代码中修改,具体在文件:Cocos2dxRenderer.java
在代码中可以看到以下的属性设置和重写的方法:
private&static&long&sAnimationInterval&=&(long)&(1.0&/&60&*&Cocos2dxRenderer.NANOSECONDSPERSECOND);
public&void&onDrawFrame(final&GL10&gl)&{}
如果要修改android平台的帧率,可以通过修改这些代码来改进,具体的操作方法如下:
1.修改帧率将60改成40
private&static&long&sAnimationInterval&=&(long)&(1.0&/&40&*&Cocos2dxRenderer.NANOSECONDSPERSECOND);
2.增加一个属性变量
private&long&renderingElapsedTime&=&0;
3.重写渲染方法onDrawFrame
public&void&onDrawFrame(final&GL10&gl)&{
&&&&&&&&if&(renderingElapsedTime&*&NANOSECONDSPERMICROSECOND&&&Cocos2dxRenderer.sAnimationInterval)&{
&&&&&&&&&&&&Thread.sleep((Cocos2dxRenderer.sAnimationInterval&-&renderingElapsedTime&*&NANOSECONDSPERMICROSECOND)&/&NANOSECONDSPERMICROSECOND);
&&&&}&catch&(InterruptedException&e)&{
&&&&&&&&e.printStackTrace();
&&&&long&renderingStartedTimestamp&=&System.currentTimeMillis();
&&&&Cocos2dxRenderer.nativeRender();
&&&&renderingElapsedTime&=&(System.currentTimeMillis()&-&renderingStartedTimestamp);
代码中将渲染消耗的时间算进去,所以得到的帧率应该来说非常准确了。
注意,Cocos2dxRenderer中的onDrawFrame官方有实现好的帧率算法,但是被注释掉了,注释文本说存在一定的bug,帧率不精确,实际上大部分情况都可已正常使用,所以最好不要采用了~
这么做了之后,游戏的帧率在38~41左右,发热的问题也基本解决了。
最后,如果你要更好,更精确的帧率算法,也可以留言回复...
阅读(...) 评论()09-0309-0408-2008-30
05-2305-2305-2305-23
◇本站云标签主题 : 创建精灵多的时候,特别卡,帧率特别低
级别: 新手上路
可可豆: 66 CB
威望: 66 点
在线时间: 32(时)
发自: Web Page
来源于&&分类
创建精灵多的时候,特别卡,帧率特别低&&&
开发环境:cocos2dx 3.5 vs2012问题描述:现在需要创建大量的精灵(1000个以上),而且需要给他们设置物理Body,创建出来后,帧率很低,界面卡顿。请问当创建大量的精灵对象时,怎么能提高程序效率,使程序运行流畅?[ 此帖被airsurfish在 22:48重新编辑 ]
级别: 侠客
可可豆: 194 CB
威望: 194 点
在线时间: 49(时)
发自: Web Page
这个基本没辙,建议不要搞那么多物理效果,你是要做物理游戏,还是普通2d游戏?2d游戏如果是简单碰撞,完全不需要开启物理。
级别: 新手上路
可可豆: 66 CB
威望: 66 点
在线时间: 32(时)
发自: Web Page
回 1楼(asily) 的帖子
多谢回复。我是做普通2d游戏,通过碰撞检测精灵是否相交区域,不用物理的话,是不是只有循环遍历所有精灵,判断它们之间是否有相交的区域,来判定它们是否“碰撞”了?
级别: 骑士
可可豆: 673 CB
威望: 673 点
在线时间: 217(时)
发自: Web Page
回 2楼(airsurfish) 的帖子
分帧加载,使用进度条,有个加载过程
级别: 侠客
可可豆: 194 CB
威望: 194 点
在线时间: 49(时)
发自: Web Page
回 2楼(airsurfish) 的帖子
我的做法很简单,如果是单位和单位碰撞,给单位设定个大小,比如我的就是20*20,直接检测2单位是否碰撞。先循环所有舞台单位(舞台就是屏幕范围内),如果2单位距离小于一定距离,比如我设置是100,才进行碰撞检测,然后坐标补偿,这样效果就是,行动的精灵会把发呆的推着动。障碍物碰撞就用另一套方案。反正我的是rpg游戏,我是这样做的。
级别: 新手上路
可可豆: 66 CB
威望: 66 点
在线时间: 32(时)
发自: Web Page
多谢各位的指导,我去优化一下
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版为什么游戏帧数很低_圣安地列斯吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:280,018贴子:
为什么游戏帧数很低
基本都是25桢,,
嘛嘛= =上个贴很多吧友...
更新了一下显卡驱动,安...
比较穷,原来用的660 ,...
Cf为何越来越卡?除了增...
最近玩自由之战不知道怎...
突然感觉荣耀6玩游戏还...
配置如下,玩Unturend时...
新开天龙发布网,今日天龙新区天龙发布网!
1.你开了汉化补丁2.你启动了帧数限制3.你在显卡驱动设定里打开了强制
明显是限制25
哇,老卡皇   →v→ #include&iostream.h&    →v→void main()    →v→{   →v→cout&&靠简单you ass is breaked;  →v→cin&&zd;   →v→cout&&zd and omit watch you ass boom;   →v→} 
明显锁帧了
贴吧热议榜
使用签名档&&
保存至快速回贴}

我要回帖

更多关于 cocos2dx 帧数低 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信