Cocos2d-X学习——Android不同设备FPS不同问题

2014-07-16

环境:Cocos2dx 2.2.4

AppDelegate.cpp中FPS设置为 60

pDirector->setAnimationInterval(1.0 / 60);

问题:在两台Android机器上跑。 两台的FPS不一样

I9100: 4.0系统,FPS 约60,(改动FPS为30,也会改变)

S5700: 2.3系统,FPS 约80,(改动FPS为30,照样80)

这样就导致了在游戏刷帧的时候,两台机器跑的速度不一样了。

解决方法例如以下(应该仅仅有Android有这个问题)

改动Android中cocos2dx的 Cocos2dxRenderer.java代码

(PS:假设依照官方的凝视改动,也不能达到FPS一致)

	@Override
	public void onDrawFrame(final GL10 gl) {
		/*
		 * FPS controlling algorithm is not accurate, and it will slow down FPS
		 * on some devices. So comment FPS controlling code.
		 */

//		/*
		final long nowInNanoSeconds = System.nanoTime();
//		final long interval = nowInNanoSeconds - this.mLastTickInNanoSeconds;
//		*/

		// should render a frame when onDrawFrame() is called or there is a
		// "ghost"
		Cocos2dxRenderer.nativeRender();

		final long afterInNanoSeconds = System.nanoTime();
		final long interval = afterInNanoSeconds - nowInNanoSeconds;

//		/*
		// fps controlling
		if (interval < Cocos2dxRenderer.sAnimationInterval) {
			try {
				// because we render it before, so we should sleep twice time interval
				Thread.sleep((Cocos2dxRenderer.sAnimationInterval - interval) / Cocos2dxRenderer.NANOSECONDSPERMICROSECOND);
			} catch (final Exception e) {
			}
		}

//		this.mLastTickInNanoSeconds = nowInNanoSeconds;
//		*/
	}

以上,谢谢

本文地址:http://blog.csdn.net/you_and_me12/article/details/37885461

时间: 2024-08-18 17:17:54

Cocos2d-X学习——Android不同设备FPS不同问题的相关文章

【android学习】安卓设备实现触摸事件的监听,跨进程事件注入

最近想实现触摸屏的事件记录,并且分别做时间戳标记,类似于adb shell 下的getevent/setevent,查了很多资料,下面是一些总结. 实现方法: 1.利用onclick方法等.这种方法只能用于自己的Activity和View中,如果要检测其他Activity,比如键盘就不行了. 2.从linux内核入手.在事件分发前截获事件,可以对任意Activity实现事件捕获. android触摸事件的流程: http://blog.csdn.net/sunnyfans/article/det

学习Android之初。

今天开始,要正式系统的学习Android了.我想要看清未来的路.so,我查了很多,这篇博客很对胃口,写的很具体,一目了然.以至于可以预知之后的路. Thanks.从今天开始,也要付出努力了.当下把Android学好,以后工作后学习,前端和服务器端,以及html5和Hadoop.我爱编程,它将伴我一生. 大道三千,何以证道? 最近有私信.邮件给我咨询一些职业生涯规划的同学,我在这里以过来人的身份给大家一些建议. 任何行业,任何职位,无论高低,无论大小,都可以分为广博.精深两个方向. 精深自然指的是

深入理解Android之设备加密Device Encryption

深入理解Android之设备加密Device Encryption Android从4.4开始就支持一项功能,那就是对设备进行加密.加密自然是为了安全性考虑,由于/system目录是只读的,手机里那些存储设备分区中需要保护的就剩下/data/分区和sdcard了.显然,/data/和sdcard大量存储了用户数据(比如app运行时存储的数据),对他们进行加密非常非常有必要. Android 5.0发布后,为了Android设备在企业中的使用,设备加密这个功能默认就必须启用,但是加密这玩意还是对功

C#程序员学习Android开发系列之SQLite

上篇博客提到过SQLite,它是嵌入式数据库,由于其轻巧但功能强大,被广泛的用于嵌入式设备当中.后来在智能手机.平板流行之后,它作为文件型数据库,几乎成为了智能设备单机数据库的必选,可以随着安卓app打包到apk文件当中. SQLite的官方网站是http://www.sqlite.org/,可以任意下载,上面也有详尽的文档可以参考,这篇博客重点关注SQLite在Android开发中如何使用. 在Android开发中,推荐建立一个类继承自SQLiteOpenHelper来创建数据库操作类,比如:

站在巨人的肩膀上学习Android开发

我们知道,一开始最好的学习方法是模仿,尤其是模仿巨人.那说到Android开发的模仿自然就是分析并研究主流程序的布局.实现方法,进而提升自己的技术. 第一招----逆向工程 要分析"巨人"们的软件,自然免不了逆向工程,即将APK程序转化为我们可以看的懂得源码.这个google官方已经帮我们做好了工具,apktool就是一款很好的逆向工具. 下载地址为:http://pan.baidu.com/s/1kTqRhaR 我们以分析微信为例来说明这个工具的使用: 你只需执行如下命令,即完成了反

学习Android系统移植与驱动开发的心得1

首先,学习Android系统移植与驱动开发,我们需要了解两个概念.什么是“移植”?由于Android原生的代码支持的设备并不多,因此我们想要在自己的设备上完美运行Android,就需要另外开发一些程序,使得Android可以识别相应设备中的各种硬件,这个过程被称为“移植”.在这个移植的过程中,我们必需要了解另外一个知识,就是“驱动开发”(Android是基于Linux内核的).到底什么是“Linux驱动”呢?作为初学者,我们只需要知道任何的Linux驱动都有一个加载函数和一个卸载函数即可,它们分

Android菜鸟如何学习Android系统开发?

如何做好Android学习前的准备? 如果你已经确定了学习Android的目标,那么,应该提前做好哪些工作.先打下哪些基础呢? 首先,你最好先熟悉一门编程语言,现在大学里面和计算机相关的专业甚至理工类专业一般都会开设C语言课程,只是很多同学在大学期间并没有好好学习,如果对它掌握的不太好或者很久没用了,建议先从将其好好复习一下,将其基本的语法再好好回顾一下,最好能搭建一个环境来运行.调试它.如果没有学过,不妨也提前学习一下,可以参考清华大学出版社出版的谭浩强老师的<C语言程序设计>,推荐这本书的

学习Android Studio开发工具之Activity3(框架3)

接上文学习Android Studio开发工具之Activity3(框架2) 本篇介绍Android Studio提供的用户偏好设置,新建一个Module命名为Prefs,选择Settings Activity,如图: 运行的效果如图: SettingsActivity继承自AppCompatPreferenceActivity间接继承自PreferenceActivity,覆写方法onBuildHeaders(List<Header> target),在其方法内部加载视图资源文件 loadH

从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-7.通知)

通知 一个通知是一条消息他是显示于你应用程序之外的一个界面中.当你告诉系统要发布一个通知时,它首先作为一个icon出现在通知区域.为了看见通知的细节,用户可以点击通知区域展开一个新的界面.下面让我们来看一下图7-1和图7-2: 图7-1 通知出现在通知区域 图7-2 通知展开后的效果(drawer) 注意:除非特别注明外,本章指的都是NotificationCompat.Builder,它在v4 Support Library中有,正式添加于API Level 15.但有了v4 Support