我有一个基于OpenGL ES2的应用程序,可以在iPad 2上以30fps的速度平稳运行,但在iPad 1上它有点不稳定。我想修改我的应用程序,在iPad 1上使用20fps的默认帧速率,我已经验证过,这使得它在该模型上感觉更顺畅。
检测iPad 1的低性能有什么好方法?我应该只查找多个CPU内核(以及如何检测)或处理器速度或总系统内存?我知道查看设备字符串是不好的,所以我避免这样做。我已经考虑让我的绘图代码只是检测到它没有跟上帧速率并将其限制回来,但这有很多复杂性我宁愿避免(即,因为瞬态负载而重新回到iPad 2上)尖峰,然后必须添加更多的代码来重新尝试更高的帧速率,以防发生这种情况。)
答案 0 :(得分:1)
也许你应该尝试使用sysctl。
- (NSUInteger) getSysInfo: (uint) typeSpecifier
{
size_t size = sizeof(int);
int results;
int mib[2] = {CTL_HW, typeSpecifier};
sysctl(mib, 2, &results, &size, NULL, 0);
return (NSUInteger) results;
}
- (NSUInteger) cpuFrequency
{
return [self getSysInfo:HW_CPU_FREQ];
}
- (NSUInteger) busFrequency
{
return [self getSysInfo:HW_BUS_FREQ];
}
请参阅Erica Sadun's UIDevice+Extension category(从中提取此代码)。
答案 1 :(得分:0)
您是否看过displayLinkWithTarget:selector:
method of UIScreen和相关的CADisplayLink
班级?
我个人从未使用它,但它似乎是将帧率与屏幕刷新率同步的解决方案。这样,您就可以使帧率适应其理想值,并仅在必要时更新显示。