【问题标题】:iOS Core-Animation: Performance issues with CATransaction / Interpolating transform matricesiOS Core-Animation:CATransaction / 插值变换矩阵的性能问题
【发布时间】:2011-02-15 12:03:25
【问题描述】:

我正在测试我的 iPhone 应用程序的性能:

// using CATransaction like this goes from 14fps to 19fps
[CATransaction begin];
[CATransaction setDisableActions: YES];

// NEG, as coord system is flipped/messed up
self.transform = CGAffineTransformMakeRotation(-thetaWheel);

[CATransaction commit];

问题:为什么禁用核心动画在新旧变换矩阵之间进行插值的默认行为会提高性能?

他们可能会做哪些计算量如此之大的事情?即使他们使用世界上最精细的技术在两个矩阵之间进行插值,我也不敢相信这会达到 5fps?!

我无法想象这个过程除了 M_resultant = k*M_last + (1.-k)*M_target

【问题讨论】:

  • 这不仅仅是两个矩阵的线性混合。考虑一下如果你在恒等变换和 180° 旋转之间制作动画,Core Animation 会做什么——你会得到一个不改变比例的旋转,而线性混合会让你在中途留下零矩阵。

标签: performance matrix core-animation interpolation catransaction


【解决方案1】:

在两个位置之间进行插值会创建 CAAnimations,它必须按帧应用并在渲染线程和主线程之间同步。

交易成本与您一次制作动画的层数有关;尝试分析您的应用以查看瓶颈是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 2021-05-23
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    相关资源
    最近更新 更多