使用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左右,发热的问题也基本解决了。

最后,如果你要更好,更精确的帧率算法,也可以留言回复...

转载于:https://www.cnblogs.com/wdd-123/p/4746552.html

Cocos2d-x 3.0修改Android平台帧率fps - 解决游戏运行手机发热发烫问题相关推荐

  1. Cocos2d-x 修改Android平台帧率fps - 解决游戏运行手机发热发烫问题

    使用Cocos2d-x 3.0开发游戏之后,发现游戏在android手机上发热非常严重,在魅族2上,几乎担心手机会爆炸了~~~采取的一个措施就是降低帧率,因为游戏对于帧率要求不是非常高. 做过coco ...

  2. android教育游戏设计方案,基于Android平台的儿童教育游戏的设计与开发

    摘要: 在通讯技术和信息技术的不断发展时代,智能手机(平板电脑)等移动终端的普及和功能的不断强大,基于移动终端的移动学习的理念渐渐深入人心且被广大的学习者所青睐,逐渐成为一种新的学习方式.学习者在面对 ...

  3. 基于android平台的24点游戏设计与实现需求分析,基于Android平台的24点游戏设计与实现需求分析_毕业设计论文.doc...

    基于Android平台的24点游戏设计与实现 摘要 随着移动设备的普及以及移动设备的硬件的提升,移动设备的功能越来越完善,移动设备的系统平台也日渐火热起来.目前国内最常见的移动开发平台有Symbian ...

  4. Android 9.0 修改搜狗为默认输入法,并且授予运行权限

    1.概述 在9.0的产品系统ROM定制化开发过程中,在android系统中默认的输入法就是不带中文输入法的,所以产品要求需要更换搜狗为默认输入法,这首选要更换系统默认的输入法 配置,然后在系统启动的时 ...

  5. Eclipse开发Android平台的飞机大战游戏APP

    目 录 摘 要 I 一. 绪论 1 (一) 课题的目的与意义 1 (二) 本课题解决的问题 1 1. 欢迎界面 1 2. 帮助界面 1 3. 游戏界面 1 4. 失败界面 2 5. 胜利界面 2 6. ...

  6. android类小游戏,五款Android平台打僵尸类游戏推荐

    自<植物大战僵尸以来>,Q版的僵尸游戏就越发的受到休闲游戏玩家们的欢迎.Android平台的游戏也是如此,僵尸类游戏已经渐渐告别惊悚.恐怖的风格,而变身为Q版的恶搞休闲游戏了.下面就为大家 ...

  7. 结对编程--基于android平台的黄金点游戏

    游戏内容: 阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫"黄金点"的游戏: N个同学(N通常大于10),每人写一个0~100之间的有 ...

  8. 手机android player病毒怎么解决,不要担心手机中毒!教您一些有关如何彻底清除Android手机上的病毒的提示...

    如果手机中毒,您知道如何彻底杀死病毒吗?今天,我将与您分享一些彻底杀死病毒并有效防止Android手机上的病毒的方法. 1. 如何彻底杀死Android手机上的病毒 方法1: 使用内置的手机管理器 某 ...

  9. 1.0 Android平台概述

    Android,可能在iphone引入中国之前,对很多人还是相当陌生的.套用一句古话,"既生瑜,何生亮".那么已经有了iphone,为什么又非得搞一个Android呢.但是假如你对 ...

最新文章

  1. C#学习笔记-stream,win8.1开发小记
  2. mysql安装教程8.3,Summary_虚拟机安装centos8.3Linux系统_安装Mysql
  3. Ubuntu 16.04系统下配置cocos2dx-3.10
  4. 抓包工具,知道手机app上面使用的接口是哪个
  5. 从ini文件里面读取配置文件
  6. 现任明教教主vsphere视频共享部分新共享连接
  7. 解决ubuntu下的firefox无法在线播放音频和视频的问题
  8. qt_2_QT5.6+VS2015配置
  9. 拓端tecdat|R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数
  10. .Net中常用的几种ActionResult
  11. 10月2场CMDN Club活动专题、视频、资源分享
  12. 计算机统考408答题卡什么样,提醒:考研初试答题卡长这样,正确填涂,避免丢分!...
  13. 如何彻底关闭Win10自动更新,Win10永久关闭自动更新的方法
  14. OMF(Oracle Managed Files,Oracle管理的文件)介绍
  15. 水利水电课程指导之建筑制图基础_第二章测试试题
  16. arXiv每日推荐-5.16:语音/音频每日论文速递
  17. 秒杀抢单系统软件架构优化思路
  18. 第一个输出程序 Console.WriteLine
  19. error: ‘integer_sequence’ is not a member of ‘std’
  20. Python菜鸟在成长——熟悉PyCharm开发环境

热门文章

  1. php yii composer,yii2怎么用composer生成一个应用?
  2. streamlit + opencv/YOLOv3 快速构建自己的图像目标检测demo网页(七)
  3. QT之QPainter用法
  4. IntelliJ IDEA 2018.2支持Java 11、MacBook Touch Bar等新特性
  5. PHP写webservice服务端
  6. 互联网时代: 从Uber的供需匹配看开发需求
  7. php - 获取数组头尾元素
  8. SharePoint 2013 APP 开发示例 (二)获取用户信息
  9. 一牛人总结的开发流程工具组合
  10. 30天敏捷生活(7):生成行动计划