Cocos2d-x 3.0修改Android平台帧率fps - 解决游戏运行手机发热发烫问题
2014-12-30 16:46
525 查看
使用Cocos2d-x 3.0开发游戏之后,发现游戏在android手机上发热非常严重,在魅族2上,几乎担心手机会爆炸了~~~采取的一个措施就是降低帧率,因为游戏对于帧率要求不是非常高。
做过cocos2d开发的同学应该都知道在win32平台修改帧率的方式非常简单,就是在AppDelegate.cpp文件中修改:
但是这种修改方式在导出android安卓apk到真机测试的时候,发现左下角的调试信息还是现实60~65帧,完全不受影响,网上搜索之后,发小安卓的修改需要修改cocos2dx-x生成的java代码中修改,具体在文件:Cocos2dxRenderer.java
在代码中可以看到以下的属性设置和重写的方法:
如果要修改android平台的帧率,可以通过修改这些代码来改进,具体的操作方法如下:
1.修改帧率将60改成40
2.增加一个属性变量
3.重写渲染方法onDrawFrame
注意,Cocos2dxRenderer中的onDrawFrame官方有实现好的帧率算法,但是被注释掉了,注释文本说存在一定的bug,帧率不精确,实际上大部分情况都可已正常使用,所以最好不要采用了~
这么做了之后,游戏的帧率在38~41左右,发热的问题也基本解决了。
做过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
@Override public void onDrawFrame(final GL10 gl) { try { if (renderingElapsedTime * NANOSECONDSPERMICROSECOND < Cocos2dxRenderer.sAnimationInterval) { Thread.sleep((Cocos2dxRenderer.sAnimationInterval - renderingElapsedTime * NANOSECONDSPERMICROSECOND) / NANOSECONDSPERMICROSECOND); } } catch (InterruptedException e) { e.printStackTrace(); } // Get the timestamp when rendering started long renderingStartedTimestamp = System.currentTimeMillis(); // should render a frame when onDrawFrame() is called or there is a // "ghost" Cocos2dxRenderer.nativeRender(); // Calculate the elapsed time during rendering renderingElapsedTime = (System.currentTimeMillis() - renderingStartedTimestamp);
注意,Cocos2dxRenderer中的onDrawFrame官方有实现好的帧率算法,但是被注释掉了,注释文本说存在一定的bug,帧率不精确,实际上大部分情况都可已正常使用,所以最好不要采用了~
这么做了之后,游戏的帧率在38~41左右,发热的问题也基本解决了。
相关文章推荐
- Cocos2d-x 3.0修改Android平台帧率fps - 解决游戏运行手机发热发烫问题
- Cocos2d-x 修改Android平台帧率fps - 解决游戏运行手机发热发烫问题
- Cocos2d-x 修改Android平台帧率fps - 解决游戏运行手机发热发烫问题
- Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应问题
- 基于Cocos2d-x-1.0.1的飞机大战游戏迁移到Cocos2d-x-3.0版本,并移植到Android平台成功运行
- 移植cocos2d-x 游戏从Android平台到IOS平台分辨率问题及解决办法
- (转)Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应问题
- 移植cocos2d-x 游戏从Android平台到IOS平台分辨率问题及解决办法
- Cocos2dx 解决在Android平台运行游戏长时间不操作,导致的锁屏问题
- Cocos2d-x 3.0 Android修改APK名、更改图标、修改屏幕方向、修改版本号,一些需要注意的问题
- 解决Android手机修改hosts不起作用的问题
- Linux应用随笔(五)64位Debian8兼容运行32位adb开发android应用,并解决手机驱动问题
- cocos2d-x(quick--cocos2d-x)引擎开发的游戏在android平台上,锁屏,按HOME键,重反游戏后黑屏问题
- 关于android中项目导入显示乱码或者运行在手机显示乱码问题的解决
- cocos2d-x-3.12 打包android apk时 怎么修改已经配置好的setup.py参数 和解决 XX不是一个有效的 Android 目标平台 错误
- 解决:cocos2d-2.0-rc2-x-2.0.1在android虚拟机运行报"don't support gles2.0" 问题
- 问题解决:cocos2d-2.0-rc2-x-2.0.1在android虚拟机运行报"don't support gles2.0"
- 解决Cocos2d-x 3.0 以后 ListView、PageView Android下可视区域绿问题
- Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》移植到android手机