2009-02-20 20 views
23

2つの違いは何ですか?CATransform3D対CGAffineTransform?

私は、彼らが長所と短所、そして彼らがより良い演奏しているような状況を持っていると確信している。

2を比較する任意のリソース?

アニメーションの方が良いですか(私はCATransform3Dを想像しています)?どうして?

また、私はテキストの明瞭さが問題になる可能性があると読んだと思いますが、スケーリングテキストの方が優れていますか?

答えて

20

MSNが言ったように、彼らは別のケースで使用されています。 CGAffineTransformは、NSView、UIView、およびその他の2Dコアグラフィックス要素の2次元操作に使用されます。

CATransform3Dは、CALayersのより複雑な3次元操作を行うことができるコアアニメーション構造です。 CATransform3DはOpenGLのモデルビューマトリックスと同じ内部構造を持っています。これはCore AnimationがOpenGL上に構築されていることを認識すると意味があります(CALayersはOpenGLテクスチャなどのラッパーです)。 Appleが提供するいくつかの素敵なヘルパー関数と組み合わされたこの内部構造の類似点は、hereと投稿したように、きちんとしたOpenGL最適化を行うことができることが分かりました。

どちらを使用するかを選択するときは、2次元空間(CGAffineTransform)または3Dアニメーションレイヤー(CATransform3D)で直接ビューを操作するかどうかを尋ねます。より頻繁にCATransform3Dを使用しますが、これはCore Animationに多くの時間を費やすためです。

7

1つは線形2次元変換であり、もう1つは3次元投影変換です。少なくともそれは私が文書から集めることができるものです。

3Dを画面に投影する必要がない場合は、アフィン変換を使用します。それ以外の場合は、3D変換を使用します。 3d変換は本質的に4×4行列であり、2次元アフィン1は3×2である。

+0

2次元アフィンは、通常、3幅×2高さです(最下行には目に見えない暗黙のアイデンティティがあります)。 – plinth

+0

私はちらつき/フレームレートの低下の問題を抱えていましたが、これを修正しました! –

関連する問題