2009-02-20 13 views
23

¿Cuál es la diferencia entre los dos?CATransform3D vs. CGAffineTransform?

Estoy seguro de que tienen pros y contras, y las situaciones que son mejores ejecutantes en.

Cualquier recurso que comparan los dos?

¿Es uno mejor para la animación (me imagino el CATransform3D)? ¿Por qué?

También creo que he leído que la claridad del texto puede ser un problema, ¿es mejor escalar el texto?

Respuesta

20

Como dijo MSN, se usan en diferentes casos. CGAffineTransform se utiliza para la manipulación en 2-D de NSViews, UIViews y otros elementos 2-D Core Graphics.

CATransform3D es una estructura de Core Animation que puede realizar manipulaciones 3D más complejas de CALayers. CATransform3D tiene la misma estructura interna que una matriz de vistas de modelos OpenGL, lo que tiene sentido cuando se da cuenta de que Core Animation se basa en OpenGL (los CALayers son envoltorios para texturas OpenGL, etc.). Descubrí que esta similitud de la estructura interna, combinada con algunas funciones de ayuda agradables que ofrece Apple, puede permitirle hacer algunas optimizaciones de OpenGL, ya que publico here.

Cuando se trata de elegir qué usar, pregúntese si va a trabajar con vistas directamente en un espacio 2-D (CGAffineTransform) o con las capas subyacentes de Core Animation en 3-D (CATransform3D). Uso CATransform3D con más frecuencia, pero eso es porque paso mucho tiempo con Core Animation.

7

Uno es para transformaciones lineales 2d, el otro es para transformaciones proyectadas tridimensionales. Al menos eso es lo que pude deducir de la documentación.

Si no necesita representar 3d proyectado en la pantalla, use la transformación afín. De lo contrario, usa la transformación 3d. La transformación 3d es esencialmente una matriz 4x4, mientras que la 2d afín es 3x2.

+0

2D Affine suele ser de 3 de ancho x 2 de alto (con una identidad implícita invisible en la fila inferior). – plinth

+0

Estaba teniendo un problema con la velocidad de fotogramas/parpadeo reducido y esto lo solucionó. –

Cuestiones relacionadas