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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值