【问题标题】:Right tool for the job: CoreAnimation, Cocoa Animation, or OpenGL ES?适合这项工作的工具:CoreAnimation、Cocoa Animation 还是 OpenGL ES?
【发布时间】:2010-08-06 13:30:22
【问题描述】:

我对在 iPhone 上做图形工作比较陌生,希望能就我应该采用哪种技术获得一些指导。我面临的问题是我需要创建一个带有旋转轮的 iPhone 应用程序,想想Price Is Right wheel

我不是在寻找任何人提供详细的解决方案,那会破坏我的乐趣!我只是想知道直接使用 Cocoa Animation 并在轮子旋转时手动绘制和移动每个单元格会更好,还是应该尝试使用 Core Animation Layers?我还考虑过使用 OpenGL ES 并在 3D 中构建一个真正的圆柱体,然后旋转它,这对我来说似乎是最合乎逻辑的,但我对这一切还是很陌生。

【问题讨论】:

  • 愿意分享您的经验吗?我正在尝试制作从页面出来的滚轮,并且用户可以左右滚动。我还计划使用带有多个 CALayer 的 CATransformLayer 来处理图像。

标签: iphone opengl-es core-animation


【解决方案1】:

对于这种情况,我通常建议首先查看 Core Animation,如果无法获得所需的性能,则仅使用 OpenGL ES。仅使用 Quartz 逐帧重绘轮子会导致性能极差,因此这里不是一个真正的选择。

使用 Core Animation,您可以执行复杂的动画,例如旋转,而无需太多代码。您还可以利用 UIViews 和其他 UIKit 组件轻松地提供触摸交互。您甚至不一定需要逐步使用图层,因为每个 UIView 都是有图层支持的,而且它们往往非常轻量级。

OpenGL ES 将为您提供可能的最佳性能,但我认为即使在较旧的设备上使用 Core Animation 简单地旋转轮子时您也不会遇到限制。 OpenGL ES 需要更多的代码来实现相同的效果,并且更难与您可能希望进行的任何触摸交互集成。

【讨论】:

  • “OpenGL ES 会给你最好的性能”谁说的? UIKit 使用 CoreAnimation,CoreAnimation 旨在提供良好的动画性能,即使你的主线程被阻塞;除非您自己费心让它成为线程,否则 OpenGL 做的不好。
  • @tc - 确实,Core Animation 服务器处理将所有内容放在后台线程上,并为您管理所有补间,但它确实增加了一些开销。如果您自己处理所有这些,并针对您的特定情况进行调整,您可以通过使用 OpenGL ES 更接近金属来获得更好的性能。我从几个开发人员那里听说,他们不得不这样做以挤出那些额外的几个 FPS 用于密集型应用程序。但是,OpenGL ES 应该是二维动画的最后手段,因为您必须编写所有代码来管理所有这些。
【解决方案2】:

根据反馈,我对 Core Animation 进行了更深入的研究,并且能够使用它完成我需要的工作。谢谢大家的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    相关资源
    最近更新 更多