为什么在 cocos2d 中只有 60 fps 才算流畅?

2023-11-27

以前可能有人问过,但我找不到它在任何地方......

在 videoland 中,24 fps 及以上的速度都是流畅的。 Cocos2d 好像是 仅当 60 fps 或更低时才流畅。任何介于 30 和 50 肯定不流畅,fps 计数器似乎不准确......

为什么是这样?还是只有我有这种情况?


实际上,造成这种行为的原因有多种,并且不仅仅是 cocos2d,而是在具有以下环境的任何游戏引擎中都会出现的效果:垂直同步(垂直同步) 已启用。在 iOS 上,VSYNC 始终处于打开状态,在 PC 上,如果帧速率始终低于显示器的速率,您通常可以选择将其关闭以提高帧速率,但代价是屏幕撕裂。通常,像 iOS 设备这样的 LCD 会以 60 Hz 的频率更新其显示,最多允许 60 fps。

Cocos2D 1.x 默认使用CADisplayLink更新类,Cocos2D 2.x 专门使用 CADisplayLink。 CADisplayLink 使更新与屏幕刷新率同步。这意味着当屏幕完成绘制其内容时会发送通知。

当你达到 60 fps 时一切都很好。但如果游戏无法及时渲染一帧以渲染 60 fps,则只有在下一次屏幕刷新完成后才会收到下一次更新。一旦帧速率降至略低于 60 fps,或者换句话说,只要更新和渲染周期完成时间超过 16.666 毫秒,这就会有效地将帧速率减半。这意味着在具有 CADisplayLink 更新的 iOS 上,您只能获得 60、30、20 和 15 fps(60 除以 1、2、3 和 4)的离散帧速率。

效果非常明显,因为帧速率在 60、30、20 和 15 fps 之间波动(即使只有不到一秒),感觉不平滑,主要是因为它非常不稳定 - 这种不稳定就是我们所说的“不平滑” ”。如果您的游戏受此影响,您可能会发现将帧速率限制为 30 fps 实际上会使游戏显得更流畅。您还有更多时间在帧之间更新和渲染内容。

24 fps 电影帧速率的稳定性被认为是“平滑”,但电影导演也学会了避免有限帧速率变得太明显的场景。例如,他们极力避免游戏经常做的事情:侧向滚动,即相机的侧向移动或经过相机的物体的侧向移动。

当您观看《霍比特人》时,您会惊讶地发现电影竟然如此流畅 - 这是第一部以 48 fps 运行的大片。您会立即注意到电影中的角色更加“真实”和“栩栩如生”。要获得印象,请查看此非官方 48 fps 霍比特人预告片.

cocos2d 显示的 fps 并不是从 60 到 30 到 20 和 15 fps 切换的准确表示,而是几个帧的平均帧速率。因此,当 cocos2d 打印“45 fps”时,这意味着游戏在过去几帧中一半时间显示 30 fps,另一半时间显示 60 fps。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在 cocos2d 中只有 60 fps 才算流畅? 的相关文章

  • Cocos2d 肖像模式在 iPhone 上不工作

    我正在构建一个 cocos2d 游戏 它应该处于纵向模式 我将 RootViewController m 更改为纵向模式 无论是在模拟器上还是在我的 iPad 上 一切都工作正常 然而 当我在 iPhone 上运行游戏时 它会默认回到横向模
  • 使 Box2d 对象遵循预定路径

    我正在制作一个游戏 其中某个对象 建模为 box2d 主体 必须遵循固定路径 有没有一种方法可以指定路径坐标并使对象在每个 dt 上前进 Thanks 另外一个选择 将鼠标关节连接到您的身体上 使用鼠标关节的setTarget方法来移动身体
  • 花栗鼠碰撞检测

    我对花栗鼠完全陌生 而且我刚刚使用它几天 所以我猜这是非常明显的事情 但是我找不到任何相关文档 Chipmunk 中是否有任何回调或方法可以告诉您 2 个给定的形状发生了碰撞 如果不是 最好的方法是简单地在精灵上使用 cgrect cont
  • 如何使用 openCV python 降低 USB 网络摄像头 2.0 的帧速率

    我正在研究Ubuntu 16 04并使用USB 2 0 网络摄像头 我想要降低帧速率不知何故 因为我正在从事的项目需要面部检测 这确实滞后于视频 因此想要降低帧速率 我尝试实现以下代码 import cv2 cap cv2 VideoCap
  • 我的 Cocos2D-iPhone 游戏可以支持 VoiceOver 吗?

    我正在制作一款游戏 玩家通过动作对声音做出反应 由于玩游戏不需要视觉元素 而且许多人都是闭着眼睛玩的 所以不完全兼容 VoiceOver 似乎很遗憾 我目前正在使用 Cocos2D iPhone 和 CocosDenshion 来处理音频
  • SimpleAudioEngine Cocos2d 内存泄漏

    I am running Instruments and it indicates that the SimpleAudioEngine is leaking memory The screenshot is attached The me
  • 调用插页式 iAd 只能运行一次

    我有 spritekit 游戏 每次游戏开始时都会预加载广告 UIViewController prepareInterstitialAds 游戏结束后 它应该显示广告 self view window rootViewController
  • 如何将 CCSprite 从一个父级转移到另一个父级?

    我有一个CCSprite called sprite那是一个孩子CCLayer called movingLayer它本身就是当前的子项CCLayer运行我的游戏逻辑 所以它是self在这种情况下 movingLayer以永远重复的动作在屏
  • Objective C - 获取今天(明天)的第二天

    如何检查某个日期是否本质上是 明天 我不想在像今天这样的日期上添加时间或任何内容 因为如果今天已经22 59 添加太多会延续到后天 添加太少则时间到了12 00会错过明天 我怎样才能检查两个NSDate并确保其中一个相当于另一个的明天 Us
  • 顺利改变CSS

    我的情况如下 我有以下功能 var showHideMemberContent function if isHidden false showHideMemberContent text Member Content main css he
  • HTML 5 视频流 .ism 文件?

    我有一个带有媒体服务 4 0 的 IIS 7 0 服务器设置 我创建了一个非常简单的 html 5 页面 其中包含video以其source指向一个 ism文件 是否可以使用 html 5 中的 ism 文件的清单来播放视频 就像在 sil
  • iOS AVCaptureSession - 如何获取/设置每秒记录的帧数?

    我是 AVCaptureSession 的新手 希望更好地了解如何使用它 因此 我设法将视频流捕获为单独的 CIImage 并将它们转换为 UIImage 现在我希望能够获取每秒捕获的帧数 并且最好能够对其进行设置 知道该怎么做吗 AVCa
  • cocos2d中的水效果

    我想在我的应用程序的背景层上有水效果 该效果不需要对触摸或任何东西做出反应 它只需要稍微晃动图像即可 CCWaves3D 看起来不错 但当我运行它时 边缘周围留下了令人讨厌的黑色伪影 类似CCShaky3D CCLiquid 将我的应用程序
  • 用由少量元素组成的向量平滑曲线?

    我有 4 条曲线 由这些向量表示 x 300 700 1000 1500 y1 1 0055394199673442 0 11221578805214968 1 502661406039569 1 0216939169819494 y2 1
  • 使用 CCTouchDispatcher Cocos2d 2.0 Beta-2 ARC

    我正在使用 cocos2d 2 0 BETA 2 0 最新的 创建一个游戏 我需要在其他班级添加一个操纵杆 所以我在第二堂课上称之为 CCTouchDispatcher 但我不能这样调用 CCTouchDispatcher sharedDi
  • 使用 Scipy/Numpy 在浊点的二维插值中仅获取“有效”点

    我有一个通过人的背部摄影测量获得的浊点 我正在尝试对其进行插值以获得规则网格 为此我正在使用scipy interpolate到目前为止取得了良好的成果 问题是 我正在使用的函数 scipy interpolate griddata 使用平
  • 如何在复杂的皂膜GAM中设置更平滑的边界条件?

    我正在对南太平洋岛屿泻湖中宽吻海豚的分布进行建模 我想使用肥皂膜平滑器来模拟海豚在二维表面 经度 x 纬度 上存在的概率 考虑到陆地边界 显然海豚不能在陆地上行走 我想知道如何将我的研究区域 陆地和近海水域 的边界固定为等于零的条件 因为我
  • 在两个点之间创建一条曲线,每个点都具有标准化向量

    因此 我需要一种写入方法来在两点之间创建一条曲线 每个点都有一个指向任意方向的归一化向量 我一直在尝试设计这样一种方法 但一直无法理解数学 在这里 由于一张图片胜过一千个文字 这就是我所需要的 在图中 矢量垂直于红线 我相信向量需要进行相同
  • CC Parallax 节点视差比(说明)

    我觉得问这个问题很愚蠢 但我在任何地方都找不到明确的答案 或者根本找不到答案 所以我觉得我必须问 有没有人可以清楚地解释 CCParallaxNode 的 parallaxRatio 是如何工作的 我检查了CCParallaxNode的来源
  • requestAnimationFrame 报告的帧速率有时高于显示器的刷新速率

    我使用以下内容来记录应用程序的帧速率 let lastCalledTime let fps let frame 0 let csv Frame Timestamp FPS const refreshLoop gt window reques

随机推荐