Cocos2d-x 修改Android平台帧率fps - 解决游戏运行手机发热发烫问题
使用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左右,发热的问题也基本解决了。
最后,如果你要更好,更精确的帧率算法,也可以留言回复...
Cocos2d-x 修改Android平台帧率fps - 解决游戏运行手机发热发烫问题相关推荐
- Cocos2d-x 3.0修改Android平台帧率fps - 解决游戏运行手机发热发烫问题
使用Cocos2d-x 3.0开发游戏之后,发现游戏在android手机上发热非常严重,在魅族2上,几乎担心手机会爆炸了~~~采取的一个措施就是降低帧率,因为游戏对于帧率要求不是非常高. 做过coco ...
- android教育游戏设计方案,基于Android平台的儿童教育游戏的设计与开发
摘要: 在通讯技术和信息技术的不断发展时代,智能手机(平板电脑)等移动终端的普及和功能的不断强大,基于移动终端的移动学习的理念渐渐深入人心且被广大的学习者所青睐,逐渐成为一种新的学习方式.学习者在面对 ...
- 基于android平台的24点游戏设计与实现需求分析,基于Android平台的24点游戏设计与实现需求分析_毕业设计论文.doc...
基于Android平台的24点游戏设计与实现 摘要 随着移动设备的普及以及移动设备的硬件的提升,移动设备的功能越来越完善,移动设备的系统平台也日渐火热起来.目前国内最常见的移动开发平台有Symbian ...
- 苹果手机发热发烫怎么办?常见原因及解决办法
很多小伙伴都喜欢使用苹果手机,有时候正在玩着苹果手机的时候,发现自己的苹果手机温度很高,很烫手,这是怎么一回事呢?苹果手机发热发烫怎么办?别担心,下面跟着小编一起来看看苹果手机发热发烫常见的原因和解决 ...
- Eclipse开发Android平台的飞机大战游戏APP
目 录 摘 要 I 一. 绪论 1 (一) 课题的目的与意义 1 (二) 本课题解决的问题 1 1. 欢迎界面 1 2. 帮助界面 1 3. 游戏界面 1 4. 失败界面 2 5. 胜利界面 2 6. ...
- android类小游戏,五款Android平台打僵尸类游戏推荐
自<植物大战僵尸以来>,Q版的僵尸游戏就越发的受到休闲游戏玩家们的欢迎.Android平台的游戏也是如此,僵尸类游戏已经渐渐告别惊悚.恐怖的风格,而变身为Q版的恶搞休闲游戏了.下面就为大家 ...
- 手机还是发烫?两招教你快速解决
手机已经成为我们生活不可或缺的一部分,可以说是目前普及最高的数码设备,基本每个人都有一部手机.不过随着夏季温度持续攀升,如今很多手机用户都会遇到手机发烫严重的问题.手机发烫什么原因?如果手机变成&qu ...
- 结对编程--基于android平台的黄金点游戏
游戏内容: 阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫"黄金点"的游戏: N个同学(N通常大于10),每人写一个0~100之间的有 ...
- 手机android player病毒怎么解决,不要担心手机中毒!教您一些有关如何彻底清除Android手机上的病毒的提示...
如果手机中毒,您知道如何彻底杀死病毒吗?今天,我将与您分享一些彻底杀死病毒并有效防止Android手机上的病毒的方法. 1. 如何彻底杀死Android手机上的病毒 方法1: 使用内置的手机管理器 某 ...
最新文章
- OpenCV+python:ROI与泛洪填充
- html 图片剪裁控件,h5图像裁剪(基于canvas)插件Image-Clip
- java 网络通信协议_JAVA-基础-网络通信协议
- C++下关于XML开源库的使用
- VMware快照管理器
- win7安装nodejs 高版本不支持 换低版本
- 各种排序算法的分析及javapython实现
- mysql菜鸟教程面向对象_第一节--面向对象编程
- 稳站大屏 AIoT 时代之巅,创维 Swaiot 生态品牌实现全面布局!
- 数据可视化 —— 数据流图(Data Flow Diagram)
- 阿里马涛:重新定义云时代的开源操作系统
- delphi2007 indy发邮件报could not load ssl library问题的解决
- 张益唐朗道-西格尔零点猜想报告:“部分地解决黎曼假设应该是对的”
- 如何删除双系统(超级详细,手把手教学)
- The English (Porter2) stemming algorithm
- tkinter中控件menu的两种组织方法
- UI设计到底是什么:什么叫ui设计?
- 华为G520联通版刷机包 新蜂V2.3 基于官方精简优化 稳定流畅
- HTTP500内部服务器错误
- Python编程-从入门到实践第15章课后习题详解
热门文章
- 《Urban stranger》——都市异乡人{英汉互译}【都市时代,异乡异客的我们】
- 使用Math.max和Math.min方法实现三个数中取中位数
- 判断字符串是否是回文(C语言)
- php tp5生成条形码,thinkPHP框架实现生成条形码的方法
- mysql中如何取消1000行的查询限制?
- web service接口 wsdl和asmx有什么区别
- win32学习之路(六)
- Android 8.1 Doze模式分析(二)——Light Doze模式
- 怎样设置计算机u盘启动程序,怎么进入BIOS设置U盘启动_如何设置U盘为第一启动项?-192路由网...
- 如何在3D中创建一个复古游戏男孩:第1部分