cocos2dx新研发的游戏,手机运行时非常热

cocos2dx新研发的游戏,手机上运行时导致手机非常热,后来听其他项目组分享时得知,可以通过降帧解决这个问题,原来是cocos2dx默认的60,后来修改为30,测试发现,手机发热问题解决了。

修改代码:

AppDelegate.cpp

    // set FPS. the default value is 1.0/60 if you don't call this

    pDirector->setAnimationInterval(1.0 / 30);


还有就是:Cocos2dxRenderer.java

//private static long sAnimationInterval = (long) (1.0 / 60 * Cocos2dxRenderer.NANOSECONDSPERSECOND);

private static long sAnimationInterval = (long) (1.0 / 30 * Cocos2dxRenderer.NANOSECONDSPERSECOND);

...

@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();

// should render a frame when onDrawFrame() is called or there is a

// "ghost"

Cocos2dxRenderer.nativeRender();

final long afterRenderNano = System.nanoTime();

//final long interval = afterRenderNano - mLastTickInNanoSeconds - Cocos2dxRenderer.sAnimationInterval;// afterRenderNano - nowInNanoSeconds;//nowInNanoSeconds - this.mLastTickInNanoSeconds;

final long interval = afterRenderNano - nowInNanoSeconds;

// fps controlling

if (interval < Cocos2dxRenderer.sAnimationInterval) {

// Log.d("onDrawFrame", "Cancel frame" + 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;

}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值