Cocos2d-x 3.0修改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左右,发热的问题也基本解决了。

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

时间: 2024-10-15 19:33:13

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

Android应用帧率--FPS测试

Android应用帧率FPS是衡量应用流畅度的一个非常重要的指标,可以根据FPS对应用做一些优化,那么在开发过程中如何来测试我们的应用的FPS呢? 准备工具:Eclipse + Android测试终端 测试步骤: 1.在设置里打开GPU呈现模式分析.点击Android设备的“设置”->"开发者选项",然后勾选“GPU呈现模式分析”(各终端可能不一样,重点是就算adb shell dumpsys gfxinfo). 2.重启我们的应用.启动应用以后,在应用的页面上做滑动. 3.打开

结对编程--基于android平台的黄金点游戏(2.0版本)

在昨天上传完博客之后发现一个重大的bug...故在此推出2.0版本. 博文详情见:http://www.cnblogs.com/RayShea/p/5372398.html coding地址:https://coding.net/u/rayshea/p/android-based-golden-point/git/tree/master/Goldenpoint2rd APK地址:http://pan.baidu.com/s/1eSsGLwQ 较先前版本的改进: 交互更加合理 存储方式更科学 代码

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

游戏内容: 阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫“黄金点”的游戏: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分. 玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 结对编程的体验 这是第一次接触到结对编程,

【第四篇章-android平台MediaCodec】解决Observer died. Quickly, do something, ... anything...

当出现!!!Observer died. Quickly, do something, ... anything...说明你的程序已经出现严重异常了,那会是什么情况呢?这个问题困扰了我许久,后来原来是使用了mediacodec的非公有API导致的,去掉这个API即OK. 版权声明:本文为博主原创文章,未经博主允许不得转载.

基于Cocos2d-x-1.0.1的飞机大战游戏迁移到Cocos2d-x-3.0版本,并移植到Android平台成功运行

一.版本迁移中的问题 1.游戏元素Sprite.Label.Action等等的创建函数名都改为create. 2.函数的回调callfunc_selectorcallfuncN_selectorcallfuncND_selectorcallfuncO_selectormenu_selector改为使用C++11的新特性std::bind和std::function配合使用:CC_CALLBACK_0CC_CALLBACK_1CC_CALLBACK_2CC_CALLBACK_3 MenuItemL

Cocos2d-x v3.0正式版尝鲜体验【2】 Android平台移植

今天没事又尝试了下3.0正式版关于Android平台的移植,把新建的项目移植了下.过程仅用了十分钟左右,什么概念?! 好吧,事实上我想说,这个版本号真的移植非常轻松啊,只是还没加上其它东西,只是就眼下来说,真的非常方便.心理算是平衡些了,由于写代码总是想着要把CC去掉... 话不多说,来看看怎么移植到Android平台吧.体会下什么叫方便. 首先须要Android的NDK,SDK,Eclipse啥啥的就不提了.这些有过移植经验的就不多说了,关于NDK,最好去官网下载最新的版本号. 假设有自己新建

cocos2dx-3.0(21) 移植android平台 说多了都是泪

----我的生活,我的点点滴滴! ! 网上3.0的教程真心少.能够说没有吧,大多都是2.x 或者 3.0測试版之类的,因为我心大,没有照着2.x去搞,后来搞完后总结了一下,发觉事实上3.0的移植android平台非常easy了,也不须要照着2.x搞,以下记录一下一个"超级苦比的小煞笔"在全然不知道怎么搞的情况下横冲直创去移植android平台遇到的问题 1..首先你的环境要配好 先看以下的图片,图片里是你须要的东西 看图说话 1.1 ADT ADT(Android Developmen

Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种各样的问题也就来了,之前网上一直有零零碎碎的移植教程,但是都不完整,或是有这样或者那样的问题.今天刚刚研究成功了Cocos2dx-3.0版本项目的安卓平台移植问题,本人亲自完成了整个过程,将Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程 一起分享给大家.

cocos 3.0 一键打包android平台应该注意的细节

cocos2d-x 移植越来越便捷,走到cocos2d-x-3.0rc2,能够说移植已经非常完好了,我们仅仅要进行适当的适配,cocos能够直接帮助我们生成apk 我网络不好无法上传图片:(无图无捷豹,呵呵),好像又能够了,哎,这网络! (1)首先确保本地已下载下面软件: android-NDK   :任意找 android-SDK    :官网   developer.android.com/sdk/index.html apache-ant      :    任意找 java-jdk