CITransform vs CATransforms 哪个以及何时使用?

CITransform vs CATransforms which and when to use?

我需要在相机上绘制一个叠加层,它在每一帧上绘制一个不同方向的箭头。

据我了解,由于要处理每一帧,我应该使用 Core graphics 绘图,但除了绘制箭头外,我还需要根据相机方向为其提供透视效果。

我设法在使用带有 CIPerspectiveTransform 的 CIFilter 转换的每一帧上叠加 png。

但现在我要通过 "drawing" 箭头进入下一个级别,我不确定应用什么更好。我应该绘制该箭头并将其转换为 CIImage 并遵循已知的应用 CIPerspectiveTransform 的路径,还是应该深入研究 Core Animation,如果是这样......在 Core Animations 世界中 CIPerspectiveTransform 的等价物是什么。

Core Animation 默认不做透视。它最适合 2D 动画。然而,这是可能的。 Core Animation 的转换矩阵是 CATransform3D 类型。

为了使透视起作用,您必须手动将 CATransform3D 的 .m34 字段设置为一个小的负值。如果您在 "CATransform3D m34" 上进行 Google 搜索,您应该会找到有关如何从 Core Animation 层获得 3D 透视图的信息。

之前没有用过Core Image的CIPerspectiveTransform滤镜,所以不好比较。

Core Animation 速度很快,针对图形硬件的高效使用和(显然)动画进行了优化。 Core Image 也是硬件加速的,但似乎不太适合动画。

我会说,如果您是基于 Core Image 滤镜的代码,可以提供可接受的性能,请使用它。这是一个已知的。 Core Animation 非常复杂,文档也不是很好。要掌握它需要大量的挖掘和实验,尤其是透视图。