新iPad上的CoreGraphics(明显)变慢了吗?

9

我刚刚购买了新的iPad(第三代),正在测试一款使用CoreGraphics的高分辨率绘图应用程序。

在普通的1024x768模式下,iPad的性能与之前的版本相当,只有在快速绘画时会稍微有些延迟。

但是,当我尝试在高分辨率画布上绘画(2048x1536),该应用程序变得无法使用,非常缓慢和卡顿。这是因为CoreGraphics主要由CPU计算(我认为与iPad2相比并没有快多少),需要进行4倍的工作量吗?

基本上,我已经改变了我的绘画例程:

UIGraphicsBeginImageContext(CGSizeMake(1024, 768));

To

UIGraphicsBeginImageContextWithOptions(CGSizeMake(1024, 768), NO, 0.0);

为了实现视网膜绘图,线条非常好看而且清晰,图像保存为2048x1536。但正如所提到的,延迟和滞后使它作为绘图工具无用。
除了在openGL中重新编写我的应用程序(由于时间限制和早期尝试关键混合模式失败,这不是一个选择),还有什么我可以做来优化在新iPad上运行视网膜模式下的CoreGraphics应用程序?

“更大的画布”是指Retina模式下的iOS模拟器,还是实际的iPad? - CodaFi
性能问题可能更多地与您如何使用CoreGraphics有关,而不是CG本身。有一些在iPad上使用视网膜的真正敏捷的应用程序,我没有看到巨大的影响。也许您可以发布您是如何进行绘图的... 没有这个,将很难提供帮助。 - Jody Hagins
基本上,我正在使用kCGBlendModeDarken将CGContextStrokePaths描绘到CGContextRef中。如上所述,在标准分辨率下,该应用程序在iPad3上运行良好,我所做的唯一事情就是增加CGcontext的分辨率并交换我在问题中提到的线条。我已经看到了像procreate这样基于openGL的应用程序非常迅速,但我想我的问题更普遍,关于CoreGraphics在新iPad上的表现如何。 - machineboy
我遇到了非常相似的问题,我正在一个可缩放画布上进行绘图。在之前的iPad上,它运行得非常快,但在新的iPad上,如果我快速地开始缩放,应用程序有时会崩溃,有时屏幕会变黑,并在中间显示一个小活动指示器。真的很烦人。在这两种情况下,我渲染的路径数量是相同的。 - Omer
1
对我来说,总的来说,CoreGraphics非常慢。我用它来绘制网格视图上瓦片的一些UI元素,在非Retina的iPad和iPhone上获得了可接受的性能,但在Retina iPad上性能要差得多。每次遇到这个问题,我要么放弃并简化UI,要么切换到OpenGL。除非苹果修复框架,否则看起来没有选择。 - Greg
1个回答

2

如果应用是由您自己制作的,并且导致您的iPad变慢,您应该在xcode的Instruments上对其进行测试。我认为这可以帮助您找出问题所在。我不认为您的iPad有故障或类似问题。


+1 表示“运行工具”。具体来说,我建议进行时间分析,以查看哪些部分运行缓慢,并确定如何解决问题(可能与您认为的原因不同)。 - JRG-Developer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接