在 Cocos2D V3 中将帧率从 60 增加到 90 没有效果
Increasing framerate from 60 to 90 in Cocos2D V3 no effect
在 CCAppDelegate 中我设置:
NSTimeInterval animationInterval = [(config[CCSetupAnimationInterval] ?: @(1.0/90.0)) doubleValue];
[director setAnimationInterval:animationInterval];
director.fixedUpdateInterval = [(config[CCSetupFixedUpdateInterval] ?: @(1.0/90.0)) doubleValue];
在 CCDirectoriOS - startAnimation 中我设置:
int frameInterval = (int) floor(_animationInterval * 90.0f);
CCLOG(@"cocos2d: animation started with frame interval: %.2f", 90.0f/frameInterval);
但是 FPS 计数器显示最大 59/60 fps。
如何提高帧率?
帧率提高到60以上没有意义,因为屏幕刷新率是60Hz,所以在屏幕上不会有任何区别,而且会只是浪费电池和 CPU.
理论上您可以在 cocos2d 中增加它,但是您必须更改一些代码,因为 cocos2d 使用 CADisplayLink 作为其内部计时器,它显然与显示器相关联,因此给您最大 60 帧/秒。您将必须拥有自己的间隔为 1.0/90.0 的刷新计时器。但是你还是看不出区别。
真正的原因是 iOS 设备具有 60 Hz 的固定屏幕刷新率。您不能在 iOS 上显示超过每秒 60 帧,因为屏幕刷新速度不会超过 60 Hz(= 每秒次数)。几乎所有其他移动设备也是如此。
现在在 PC 上,关闭垂直同步并让 GPU 尽可能快地渲染是很常见的,所有 screen tearing 您都可以忍受。在移动设备上,VSync 始终处于打开状态,您永远无法将其关闭。
移动基准测试软件经常使用所谓的 "offscreen render" 测试,它们将所有内容渲染到内存缓冲区中以规避 60 Hz 限制并得出理论上可实现的帧速率,例如 150 fps。当然,当测试为 运行.
时,您不会在屏幕上看到测试的实时更新
在 CCAppDelegate 中我设置:
NSTimeInterval animationInterval = [(config[CCSetupAnimationInterval] ?: @(1.0/90.0)) doubleValue];
[director setAnimationInterval:animationInterval];
director.fixedUpdateInterval = [(config[CCSetupFixedUpdateInterval] ?: @(1.0/90.0)) doubleValue];
在 CCDirectoriOS - startAnimation 中我设置:
int frameInterval = (int) floor(_animationInterval * 90.0f);
CCLOG(@"cocos2d: animation started with frame interval: %.2f", 90.0f/frameInterval);
但是 FPS 计数器显示最大 59/60 fps。
如何提高帧率?
帧率提高到60以上没有意义,因为屏幕刷新率是60Hz,所以在屏幕上不会有任何区别,而且会只是浪费电池和 CPU.
理论上您可以在 cocos2d 中增加它,但是您必须更改一些代码,因为 cocos2d 使用 CADisplayLink 作为其内部计时器,它显然与显示器相关联,因此给您最大 60 帧/秒。您将必须拥有自己的间隔为 1.0/90.0 的刷新计时器。但是你还是看不出区别。
真正的原因是 iOS 设备具有 60 Hz 的固定屏幕刷新率。您不能在 iOS 上显示超过每秒 60 帧,因为屏幕刷新速度不会超过 60 Hz(= 每秒次数)。几乎所有其他移动设备也是如此。
现在在 PC 上,关闭垂直同步并让 GPU 尽可能快地渲染是很常见的,所有 screen tearing 您都可以忍受。在移动设备上,VSync 始终处于打开状态,您永远无法将其关闭。
移动基准测试软件经常使用所谓的 "offscreen render" 测试,它们将所有内容渲染到内存缓冲区中以规避 60 Hz 限制并得出理论上可实现的帧速率,例如 150 fps。当然,当测试为 运行.
时,您不会在屏幕上看到测试的实时更新