2011-03-31 13 views

Respuesta

17

Desde iOS 4.0, el SDK incluye el Accelerate framework de Apple, que contiene una cantidad de funciones de vectores y matriz C que están especialmente optimizadas para ejecutarse en el hardware de iOS.

Los nombres de las funciones y la documentación son algo crípticas, pero si el rendimiento es particularmente importante, podría ser su mejor opción.

+6

En particular, la biblioteca vDSP dentro del marco de Accelerate es lo que está buscando con respecto a la manipulación acelerada de la matriz: http://developer.apple.com/library/ios/#documentation/Accelerate/Reference/vDSPRef/Reference/ reference.html% 23 // apple_ref/doc/uid/TP40009464 –

1

Además del marco de Accelerate que Ole señala para las matemáticas matriciales aceleradas, las estructuras CGAffineTransform y CATransform3D son matrices (3x3 y 4x4, respectivamente). Apple proporciona funciones de ayuda para manipular estos utilizando rotación, escalado, etc., que pueden ser útiles si desea hacer este tipo de transformaciones.

En particular, Apple tiene una sección de la Guía de programación 2D de cuarzo donde explain some of the matrix math.

3

No lo mencioné pero GLKit proporciona funciones vectoriales/de matriz para los tipos matemáticos de uso común en gráficos de computadora.

+0

Son agradables y sencillos de usar, pero no estoy seguro de si son óptimos para el rendimiento. p.ej. es [GLKVector3Normalize] (http://developer.apple.com/library/IOs/documentation/GLkit/Reference/GLKVector3/Reference/reference.html#//apple_ref/c/func/GLKVector3Normalize) haciendo '1.0/sqrtf (x * x + y * y + z * z) ', ejecuta una [aproximación de software rápida] (http://www.google.com/search?q=0x5f3759df), o usa una instrucción de hardware (presumiendo que ARM incluso tiene un rsqrt)? – rickster

+0

En la medida de lo óptimo, está en línea y algunas de las funciones de matriz más costosas tienen '# define' para cambiar la implementación y usar instrucciones vectorizadas al construir para el dispositivo. Te da una lib de matriz/vector comprensible con rendimiento. Supongo que todo es una aproximación dentro de los límites del tipo de almacenamiento subyacente, pero señalar las casillas rápidas de Carmack a alguien que busca una biblioteca podría ser un poco temprano en el viaje. –

0

YCMatrix proporciona un envoltorio conveniente para muchas de las funciones de Accelerate Framework (BLAS, LAPACK y vDSP), tanto en OS X como en iOS.

(disclaimer: Yo soy el programador de esa biblioteca)

Cuestiones relacionadas