【问题标题】:CATransform3D vs. CGAffineTransform?CATransform3D 与 CGAffineTransform?
【发布时间】:2010-10-08 17:52:16
【问题描述】:

这两者有什么区别?

我敢肯定他们各有利弊,在哪些情况下他们表现更好。

有比较这两者的资源吗?

动画效果更好吗(我想是 CATransform3D)?为什么?

另外我想我在某处读到文本清晰度可能是一个问题,在缩放文本方面是否更好?

【问题讨论】:

    标签: iphone cocoa cocoa-touch core-animation core-graphics


    【解决方案1】:

    一个用于线性二维变换,另一个用于三维投影变换。至少这是我可以从文档中收集到的。

    如果您不需要将 3d 投影到屏幕上,请使用仿射变换。否则,使用 3d 变换。 3d 变换本质上是一个 4x4 矩阵,而 2d 仿射矩阵是 3x2。

    【讨论】:

    • 2D 仿射通常是 3 宽 x 2 高(底行有一个不可见的隐含标识)。
    • 我遇到了闪烁/降低帧率的问题,这解决了它!
    【解决方案2】:

    正如 MSN 所说,它们用于不同的情况。 CGAffineTransform 用于 NSView、UIView 和其他 2-D 核心图形元素的 2-D 操作。

    CATransform3D 是一个核心动画结构,可以对 CALayers 进行更复杂的 3-D 操作。 CATransform3D 具有与 OpenGL 模型视图矩阵相同的内部结构,当您意识到 Core Animation 是基于 OpenGL 构建的(CALayers 是 OpenGL 纹理的包装器等)时,这是有道理的。我发现这种内部结构的相似性,再加上 Apple 提供的一些不错的辅助函数,可以让你做一些简洁的 OpenGL 优化,正如我发布的here

    在选择使用哪个时,问问自己是要直接在 2-D 空间中使用视图 (CGAffineTransform) 还是使用 3-D 中的底层核心动画层 (CATransform3D)。我更频繁地使用 CATransform3D,但那是因为我花了很多时间在 Core Animation 上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多