【发布时间】:2012-04-26 04:54:16
【问题描述】:
我刚拿到新的 iPad(3),目前正在测试使用 CoreGraphics 的高分辨率绘图应用程序版本。
在正常的 1024x768 模式下,iPad 的性能或多或少相似 - 快速绘图时只有轻微的延迟。
但是,当我尝试在高分辨率画布 (2048x1536) 上绘画时,应用程序变得异常缓慢和滞后。这是因为 CoreGraphics 主要由 CPU 计算(我相信它并没有比 iPad2 快多少)并且必须多做 4 倍的工作?
我基本上改变了我的绘图程序
UIGraphicsBeginImageContext(CGSizeMake(1024, 768));
到
UIGraphicsBeginImageContextWithOptions(CGSizeMake(1024, 768), NO, 0.0);
启用视网膜绘图,线条非常漂亮和清晰,图像以 2048x1536 格式保存。但如前所述,延迟和滞后使其无法用作绘图工具。
除了在 openGL 中重写我的应用程序(由于时间限制和早期在关键混合模式下的失败尝试,这不是一个选项),我可以做些什么来优化在新 iPad 上以视网膜模式运行的 CoreGraphics 应用程序?
【问题讨论】:
-
“更大的画布”是指 Retina 模式下的 iOS 模拟器,还是真正的 iPad?
-
性能问题可能更多地与您使用 CoreGraphics 的方式有关,而不是与 CG 本身有关。在 iPad 上有一些使用 Retina 的真正快速的应用程序,我还没有看到巨大的影响。也许您可以发布您的绘图方式...没有它,将很难提供太多帮助。
-
基本上我正在使用 kCGBlendModeDarken 将 CGContextStrokePaths 抚摸到 CGContextRef 中。如前所述,在标准分辨率下,该应用程序在 iPad3 上运行,我唯一要做的就是提高 CGcontext 的分辨率,交换我的问题中提到的行。我见过像 procreate 这样的基于 openGL 的应用程序真的很活泼,但我想我的问题是关于 CoreGraphics 在新 iPad 上的表现更笼统。
-
发生了非常相似的事情,我在可缩放的画布上绘图。在以前的 iPad 上运行速度惊人,在新 iPad 中,如果我开始快速放大和缩小,应用程序有时会崩溃,有时屏幕会变黑,中间有一个小的活动指示器。真烦人。在这两种情况下,我都渲染了相同数量的路径。
-
对我来说,CoreGraphics 总体上似乎很慢。我用它在网格视图上为图块绘制了一些 UI 元素,并在非视网膜 iPad 和 iPhone 上获得了可及的性能,但在视网膜 iPad 上的性能要差得多。每次遇到这个问题,我要么放弃并简化 UI,要么切换到 OpenGL。除非 Apple 修复框架,否则似乎没有其他选择。
标签: ios drawing core-graphics ipad-3