study_wuwenyao 2014-09-20 02:44 采纳率: 0%
浏览 7205

关于cocos2dx帧率设置的问题:为什么帧率设置无效?

大家好,我这里刚刚接触cocos2dx。有个疑问请教下。
我用的版本是2.2.5,平台win7,VS版本10.
在hello world中有如下代码
// 打开fps显示

pDirector->setDisplayStats(true);

// 设置fps帧率

pDirector->setAnimationInterval(1.0/60);

我在尝试修改帧率的时候发现,如果我将帧率设置为大于60.那么这个设置将不会起作用。
进入setAnimationInterval函数。根据逻辑可知变量m_dAnimationInterval应该是确定帧率的控制变量。查找变量得到如下结果
\"\"\\"\\"\"\"
分别进入各个查找结果,发现只有第一处和第三处有对m_dAnimationInterval进行修改。第一处根据代码来看应该是设置默认值。理论上来讲当调用setAnimationInterval后它设置的值应该是被修改为最新的指定值了的。线索到此处断开。没有找到cocos是如何控制帧率的。然后我进入setDisplayStats函数,试图找到fps显示到界面的地方。从这里找到一些线索。进入函数后找到如下代码
inline void setDisplayStats(bool bDisplayStats) { m_bDisplayStats = bDisplayStats; }
判断m_bDispalyStats应该是控制开关,查找之。最后找到一个void CCDirector::showStats(void)函数,确定此处是控制显示帧率的地方。并确定显示帧率的代码如下
sprintf(m_pszFPS, \\\\"%4lu\\\\", (unsigned long)g_uNumberOfDraws);

            m_pDrawsLabel->setString(m_pszFPS);

确定全局变量 g_uNumberOfDraws就是帧率,查找找到如下带参数宏
#define CC_INCREMENT_GL_DRAWS(__n__) g_uNumberOfDraws += n
通过宏进行查找,得到如下结果
\"\"\\"\\"\"\"
到这里可以得出大概结论,每当做一次绘制(什么绘制我不知道,只是从名字上推断应该是绘制)帧数+1.
但是到达这里后我再次找不到线索。所以我走不下去了。。特来此请教
Q1:m_dAnimationInterval是如何控制帧率的?
Q2:为什么我设置帧率大于60后设置无效?
补充说明:因为我的电脑是x250CPU+NVIDIA GEFORCE 7025/NVIDIA NFORCE 630a 显卡,最开始我怀疑是硬件影响,然后我进入init函数删除所有的渲染。。但是还是帧率大于60设置无效。基本排除硬件影响。

  • 写回答

3条回答

  • 龙劲 2015-03-27 06:00
    关注

    因为手机屏幕的刷新率就是60Hz,这个是LCD上芯片控制的,也就是设备驱动控制的,当然这个芯片的刷新是可以改的,不过一般都设置为60Hz

    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码