Cocos2d-x 修改Android平台帧率fps - 解决游戏运行手机发热发烫问题
来源:互联网 发布:广州恒大淘宝足球学校 编辑:程序博客网 时间:2024/04/25 16:22
使用Cocos2d-x 3.0开发游戏之后,发现游戏在android手机上发热非常严重,在魅族2上,几乎担心手机会爆炸了~~~采取的一个措施就是降低帧率,因为游戏对于帧率要求不是非常高。
做过cocos2d开发的同学应该都知道在win32平台修改帧率的方式非常简单,就是在AppDelegate.cpp文件中修改:
1
director->setAnimationInterval(
1.0
/
40
);
但是这种修改方式在导出android安卓apk到真机测试的时候,发现左下角的调试信息还是现实60~65帧,完全不受影响,网上搜索之后,发小安卓的修改需要修改cocos2dx-x生成的java代码中修改,具体在文件:Cocos2dxRenderer.java
在代码中可以看到以下的属性设置和重写的方法:
1
2
private
static
long
sAnimationInterval = (
long
) (
1.0
/
60
* Cocos2dxRenderer.NANOSECONDSPERSECOND);
public
void
onDrawFrame(
final
GL10 gl) {}
如果要修改android平台的帧率,可以通过修改这些代码来改进,具体的操作方法如下:
1.修改帧率将60改成40
1
private
static
long
sAnimationInterval = (
long
) (
1.0
/
40
* Cocos2dxRenderer.NANOSECONDSPERSECOND);
2.增加一个属性变量
1
private
long
renderingElapsedTime =
0
;
3.重写渲染方法onDrawFrame
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@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左右,发热的问题也基本解决了。
最后,如果你要更好,更精确的帧率算法,也可以留言回复...
0 0
- Cocos2d-x 修改Android平台帧率fps - 解决游戏运行手机发热发烫问题
- Cocos2d-x 修改Android平台帧率fps
- unity解决APP在手机发烫问题
- React-native 进行下载任务时,低配手机发热发烫,运行卡慢的解决办法
- Cocos2d-x跨平台手机游戏开发学习路线图
- 移植cocos2d-x 游戏从Android平台到IOS平台分辨率问题及解决办法
- 移植cocos2d-x 游戏从Android平台到IOS平台分辨率问题及解决办法
- cocos2d-x游戏从win32平台移植Android平台
- Cocos2d-X学习——Android不同设备FPS不同问题
- android手机游戏开发Cocos2d-x开发分享
- cocos2d-x(quick--cocos2d-x)引擎开发的游戏在android平台上,锁屏,按HOME键,重反游戏后黑屏问题
- 在Android平台上运行Cocos2D-x的HelloWorld
- Cocos2d-x游戏开发之无法运行在Android模拟器
- 完美解决夏天电脑cpu发烫问题
- cocos2d平台游戏移到windows平台运行
- Cocos2dx 解决在Android平台运行游戏长时间不操作,导致的锁屏问题
- 【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2.0.1版本跨平台整合NDK+Xcode,Xcode编写&编译代码,Android导入打包运行即可!
- Cocos2d-x 是一个支持多平台的 2D 手机游戏引擎
- 例4.归并排序(mergesort.pas) pku 2299
- 蓝牙的使用
- mybatis深入理解之 # 与 $ 区别以及 sql 预编译
- 论java中的抽象类与接口
- 自定义搜索帮助
- Cocos2d-x 修改Android平台帧率fps - 解决游戏运行手机发热发烫问题
- 利用牛顿迭代法求平方根
- js 闭包
- Java文件下载到本地
- cocos2d js 安卓web情况下显示模糊的问题
- 学习数据结构的原因
- java中的四舍五入——几种四舍五入的写法
- Linux常用命令
- C语言 JSON 解析库 - MJSON使用介绍