我正在寻找一种获取FPS速率的方法,我在CCDirector中找到了属性secondsPerFrame,但是每个CCLog都说[CCDirector sharedDirector].secondsPerFrame
是“0.000000”
如果我可以定制代码以立即调整帧速率下降,游戏基本上不会低于60fps,这将是惊人的。
答案 0 :(得分:1)
如果我可以定制代码以立即调整帧速率下降, 游戏基本上永远不会低于60fps,这将是 惊人的。
如果有可能,我们会发现这是渲染引擎的标准功能。唉,事实并非如此。
要检测丢弃的帧意味着必须已经删除了一个帧。切换代码路径的开销,特别是回到“高细节”版本的开销通常也太高。
除了设计游戏的头痛,其视觉甚至算法可能随时变化。
另外,玩家的感知会相当消极 - 考虑流媒体视频会自动调整到带宽,有时会在几秒钟内显得非常模糊。
如果您无法始终匹配60 fps,将游戏限制在30 fps通常会更好,并且设置为稳定的30 fps而不是40到60 fps的波动。
无论如何,如果您记录secondsPerFrame
并获得0.0000,则可能使用错误的格式说明符进行了记录。试试这个:
NSLog(@"spf: %f", [CCDirector sharedDirector].secondsPerFrame);
请记住,此值可能是多个帧的平均值,并且可能无法在发布版本中更新。检查代码是否为#if /#ifdef。