2009-02-20 11 views
23

Was ist der Unterschied zwischen den beiden?CATransform3D vs. CGAffineTransform?

Ich bin sicher, sie haben Vor- und Nachteile, und Situationen, die sie in besseren Interpreten sind.

Alle Ressourcen, die die beiden vergleichen?

Ist einer besser für die Animation (ich stelle mir CATransform3D vor)? Warum?

Auch ich glaube, ich habe irgendwo gelesen, dass Textklarheit ein Problem sein kann, ist es besser, Text zu skalieren?

Antwort

20

Wie MSN sagte, werden sie in verschiedenen Fällen verwendet. CGAffineTransform wird für die 2D-Manipulation von NSViews, UIViews und anderen 2D-Core-Grafikelementen verwendet.

CATransform3D ist eine Core-Animation-Struktur, die komplexere 3-D-Manipulationen von CALayers ausführen kann. CATransform3D hat die gleiche interne Struktur wie eine OpenGL-Modellansichtsmatrix, was sinnvoll ist, wenn Sie erkennen, dass Core Animation auf OpenGL basiert (CALayers sind Wrapper für OpenGL-Texturen usw.). Ich habe festgestellt, dass diese Ähnlichkeit der internen Struktur, kombiniert mit einigen netten Hilfsfunktionen, die Apple bietet, Sie einige nette OpenGL-Optimierungen machen können, wie ich here post.

Wenn es darauf ankommt, welche zu verwenden, fragen Sie sich, ob Sie mit Ansichten direkt in einem 2D-Raum (CGAffineTransform) oder mit den zugrunde liegenden Core Animation-Ebenen in 3D (CATransform3D) arbeiten. Ich verwende CATransform3D häufiger, aber das liegt daran, dass ich viel Zeit mit Core Animation verbringe.

7

Einer ist für lineare 2D-Transformationen, der andere ist für dreidimensionale projizierte Transformationen. Zumindest konnte ich das aus der Dokumentation entnehmen.

Wenn Sie 3D nicht auf den Bildschirm projizieren müssen, verwenden Sie die affine Transformation. Andernfalls verwenden Sie die 3D-Transformation. Die 3d-Transformation ist im Wesentlichen eine 4x4-Matrix, während die 2d-affine 3x2 ist.

+0

2D Affine ist normalerweise 3 breit x 2 hoch (mit einer unsichtbaren implizierten Identität in der unteren Reihe). – plinth

+0

Ich hatte ein Problem mit Flimmern/reduzierter Framerate und das hat es behoben! –

Verwandte Themen