Home » Análisis » Diferencias entre Metal y Android Extension Pack
Metal vs. Android Extension Pack

Diferencias entre Metal y Android Extension Pack

Las cartas están sobre la mesa: el futuro de los juegos móviles está claro y las dos marcas que actualmente tienen mayor presencia en el mercado, Apple y Google, se enfrentan cada una con sus propias soluciones de gráficos de alta calidad o high-end.

Por parte de Apple tenemos Metal, API independiente que permite programar directamente la GPU del procesador A7 (y suponemos, superiores). Por parte de Google: Android Extension Pack, un conjunto de APIs para OpenGL ES 3.1 que permiten interesantes funciones que las librerías abiertas no soportan.

Apple Metal

Pero no nos engañemos: ambas marcas fueron muy claras. Metal es solo soportado por el procesador A7 de 64 bits de Apple y Android Extension Pack, como parte de la última versión Android L (ahora en pruebas) solo estará disponible para los modelos de gama alta que salgan a partir de otoño, como los basados en la GPU nVidia K1 sobre la que fue realizada su presentación. Esta calidad gráfica solo estará al alcance de la gama alta.

Android Extension Pack, una capa para OpenGL ES

OpenGL ES es una capa de abstracción gráfica o API, que permite manejar programar el procesador de gráficos del dispositivo. Como lenguaje estándar y norma, ha de ser compatible con todos los procesadores móviles (normalmente de arquitectura ARM) y como tal, eso supone que las capas y el peso del lenguaje hasta obtener un resultado final, lastra el rendimiento.

Android Extension Pack

Android Extension Pack es una capa, creada específicamente para el sistema operativo de Google, con soporte para procesadores x86, ARM y MIPS, que permitirá realizar funciones que las librerías OpenGL ES 3.1 no son capaces de hacer por sí mismas como la teselación, los shaders geométricos o calculados o el uso de algoritmos ASTC de compresión de texturas.

Como tal, es una capa a añadir que reducirá aun más el rendimiento que ya de por sí tiene OpenGL ES. Pero cuando hablamos de Android y de su característica inherente de funcionar en cualquier dispositivo, es lógico. Google tiene que ceñirse al estándar OpenGL, donde tiene la garantía que cualquier GPU que ponga su sistema (pasada, presente o futura) ha de cumplir. La búsqueda de la compatibilidad, como sucede en todo Android, lastra el rendimiento al alejarse del hardware.

Apple Metal, acercándose a la GPU, eliminando capas

Apple, sin embargo, ha hecho todo lo contrario. Según Alex St. John, uno de los padres de DirectX, Metal es a Apple lo que DirectX es a Microsoft. Apple, que diseña y fabrica sus propios procesadores móviles, ha creado Metal como una API que está completamente pegada a la GPU.

Y además, ha hecho un lenguaje limpio, bien estructurado y con gran potencial, no como OpenGL ES que, en palabras de St. John, es “una bolsa de sorpresas, llena de funcionalidades inconsistentes y rotas”. Como API de bajo nivel, Metal permite sacar un rendimiento gráfico que hasta ahora no ha podido verse en dispositivos móviles, llegando mucho más allá en funciones y rendimiento.

Metal vs. OpenGL ES

Siguiendo la filosofía de Apple de control del hardware, Metal no es compatible más que con las GPUs de la propia Apple, pero su rendimiento, versatilidad y funcionamiento se sitúa a mucha distancia de OpenGL ES y, por supuesto, de lo que supone Android Extension Pack. Por lo tanto, en igualdad de condiciones, el rendimiento y posibilidades de Apple Metal será muy superior, al eliminar las capas de abstracción y permitir programar directamente el procesador gráfico.

Por otro lado, como Apple soporta OpenGL ES, da un paso adelante para permitir el desarrollo multi-plataforma, aportando su propia API para dar un extra de rendimiento. Y además, no olvidemos que Metal es nativo a 64 bits.

La mejor solución

Podríamos decir que ambas se complementan. Android Extension Pack irá acompañado de CPUs y GPUs más potentes, con más núcleos y con mayor capacidad, aunque su resultado será inferior porque al haber más capas entre GPU y código, el rendimiento será menor. Por el contrario, Metal, funcionando en un A7 de doble núcleo, tendrá la potencia suficiente para dar mucho más de sí pues trabajará directamente contra la GPU.

Lo importante a nivel usuario es que los middlewares de mayor uso, como Unreal Engine o Unity 3D, apostarán por adaptarse. La suma de ambos mercados es demasiado jugosa para dejar alguno de lado. Y siendo fieles a la verdad, implementar Metal dará resultados más satisfactorios pero supondrá algo más de trabajo, ya que Android Extension Pack al ser complemento de OpenGL ES, ya tiene hecho parte del trabajo.

Plants vs Zombies: Garden Warfare para iOS 8

La realidad para todos es que los juegos de dispositivos móviles van a dar un salto cualitativo muy importante en ambos sistemas, que tanto Google como Apple se han puesto muy serios al respecto, y que las consolas más casuales como la Nintendo Wii U o las portátiles como la Sony PS Vita o Nintendo 3DS, pueden empezar a temer a este nuevo jugador. Porque tendrá mucho que hablar. Sobre todo después de ver el proyecto Android TV funcionando y el posible futuro Apple TV con juegos.

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

Swift4 (I)

Swift 4 (I), compatibilidad y otras mejoras

Revisamos Swift 4 ahora que hemos podido ver su lanzamiento oficial junto a Xcode 9, pieza fundamental. Además explicamos su proyección de compatibilidad y la estabilidad del lenguaje de cara al futuro inmediato. ¿Tengo que migrar? ¿No? ¿Qué supone? ¿Funciona Swift 3 en Xcode 9? Todas las preguntas que se pueden hacer sobre compatibilidad de Swift 4 y Xcode 9, resueltas y explicadas junto a otros importantes cambios en el lenguaje.