博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2dx-3.0 android限帧问题
阅读量:6482 次
发布时间:2019-06-23

本文共 1456 字,大约阅读时间需要 4 分钟。

hot3.png

    今天研究了一下cocos2dx-3.0帧限制问题,按引擎提供的接口,修改

    director->setAnimationInterval(1.0 / 30); 

    希望把程序控制在30帧以下。编译程序跑了一下,在WIN和IOS平台下有效,但是android却一直坚挺在60帧左右。研究了一下cocos源码。

    在Cocos2dxRenderer.java中定义了一个静态变量:

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

    这里写明了帧间隔时间,但是引擎里并没有使用这个,而且是把限制的代码注释了,提示说限制算法是不正确的,在同样的设备上,帧限制可能比预期要慢,所以注释掉了。说明程序根本没限帧,提示是假的,程序一直在空跑,竞争CPU。

    我把注释放开,在模拟器上跑了一下,设置了35帧/秒,但跑起来有50帧/秒。自己修改了一下算法:

    1. 在sAnimationInterval变量下面加一个变量定义:

    private static long renderingElapsedTime = sAnimationInterval;

    2. 重写onDrawFrame函数:

 

public void onDrawFrame(final GL10 gl) {   long interval = 0; //sleep修正值  try {         if (renderingElapsedTime < Cocos2dxRenderer.sAnimationInterval) {            long sleepBefore = System.nanoTime();            Thread.sleep((Cocos2dxRenderer.sAnimationInterval - renderingElapsedTime) / Cocos2dxRenderer.NANOSECONDSPERMICROSECOND);            interval = (System.nanoTime() - sleepBefore) - (Cocos2dxRenderer.sAnimationInterval - renderingElapsedTime);            if(interval < 0) interval = 0;         }     } catch (InterruptedException e) {         e.printStackTrace();     }      long renderingStartedTimestamp = System.nanoTime();       Cocos2dxRenderer.nativeRender();      renderingElapsedTime = (System.nanoTime() - renderingStartedTimestamp);       renderingElapsedTime = renderingElapsedTime + interval;   }

最后在真机跑了一下设置35帧/秒,结果是34、33帧/秒。

转载于:https://my.oschina.net/u/1414326/blog/273967

你可能感兴趣的文章
mysql dump
查看>>
nginx配置
查看>>
薪资管理模块,经常会遇到的40几个问题汇总
查看>>
30+程序员,平时都忙些什么事情?平时都想些什么?以后有啥计划?
查看>>
庖丁解Puppet之 初级入门篇(转)
查看>>
容器管理器的基本使用笔记
查看>>
集合框架的基本操作-Collection
查看>>
微软WHQL的提交步骤
查看>>
linux下制作ISO文件
查看>>
Struts2配置详解
查看>>
在VM虚拟机中安装Redhat7 / CentOs7
查看>>
面试互联网大厂必问的22道spring Boot面试题
查看>>
Broadleaf电商平台(Solr)配置中文分词(ik-analyzer)
查看>>
SpringMVC AJAX 传数组问题
查看>>
SpringCloud的服务注册与发现Eureka
查看>>
js 字符串操作函数
查看>>
初识SAP解决方案及其上云优势
查看>>
MYsql
查看>>
如何将手机里的PDF文件转换成Word文档
查看>>
STL
查看>>