≡En resumen
- OpenGL ES funciona como una máquina de estados y deja que el controlador de la GPU valide y reorganice cada llamada sobre la marcha.
- Vulkan es una API explícita: la aplicación declara los estados, gestiona su memoria y sincroniza ella misma la CPU con la GPU.
- En una escena con muchos objetos el cuello de botella suele ser la CPU, no la GPU, por la sobrecarga del controlador.
- Vulkan permite grabar búferes de comandos en varios hilos a la vez y reutilizarlos de un fotograma a otro.
- Menos trabajo de CPU también significa menos consumo y menos calor, y por tanto un rendimiento más estable en sesiones largas.
- Para gráficos sencillos, una interfaz 2D o un prototipo, OpenGL ES sigue siendo perfectamente válido.
01 Dos filosofías: el controlador que decide o el programador que ordena
Elegir entre ellas cambia el reparto del trabajo entre la CPU, la GPU y el propio desarrollador, y ese reparto acaba notándose en la fluidez, la batería y la temperatura del teléfono.
OpenGL ES funciona como una máquina de estados. La aplicación activa una textura, cambia un parámetro, lanza una orden de dibujo, y el controlador de la GPU se encarga de traducir todo eso, validar que tenga sentido y decidir cuándo enviarlo al chip. Es cómodo, porque el programador no tiene que preocuparse por la memoria ni por la sincronización. El precio es que el controlador trabaja a ciegas: no sabe qué vendrá después, así que comprueba y reorganiza cada llamada sobre la marcha.
02 La sobrecarga del controlador, el cuello de botella oculto
En un juego o una aplicación con muchos objetos en pantalla, el problema rara vez es la GPU. Suele ser la CPU, saturada por miles de llamadas de dibujo que el controlador debe procesar una a una. Google anunció en 2015 que Android tendría soporte para la nueva interfaz, y su documentación actual para desarrolladores de Android cita entre las ventajas de Vulkan una arquitectura más eficiente con menor sobrecarga de CPU en el controlador de gráficos. Menos trabajo del controlador significa más margen de procesador para la lógica, la física o la inteligencia artificial de una escena. En dispositivos de gama media, donde la CPU es el primer recurso en agotarse, esa diferencia puede marcar el paso de una imagen entrecortada a una tasa estable.
03 Comandos en paralelo: aprovechar todos los núcleos
La segunda gran diferencia tiene que ver con los hilos. En OpenGL ES, el contexto gráfico está ligado a un único hilo, y repartir el trabajo de dibujo entre varios núcleos es complicado y poco rentable. Un teléfono con ocho núcleos acaba enviando las órdenes a la GPU por un solo carril.
Vulkan, en cambio, permite grabar búferes de comandos en varios hilos a la vez. Cada núcleo prepara su parte de la escena, por ejemplo el terreno, los personajes o la interfaz, y luego todos esos búferes se envían juntos a una cola de la GPU. Los búferes ya grabados pueden reutilizarse de un fotograma a otro si la escena no cambia, lo que ahorra todavía más tiempo de procesador.
04 Qué ha cambiado en Android desde 2016
Vulkan está disponible en Android a partir de la versión 7.0 (nivel de API 24), y todos los dispositivos de 64 bits con Android 10 o posterior admiten Vulkan 1.1. Según la documentación oficial, el 88 % de los dispositivos Android activos ya es compatible. Google ha definido además el perfil Android Baseline, un conjunto mínimo de funciones que los desarrolladores pueden dar por sentado en cualquier dispositivo compatible, lo que ayuda a reducir la fragmentación entre fabricantes de GPU.
Android 7.0
Primera versión con Vulkan (nivel de API 24)
Fuente: Documentación para desarrolladores de Android
Vulkan 1.1
Admitido en todos los dispositivos de 64 bits con Android 10 o posterior
Fuente: Documentación para desarrolladores de Android
88 %
Dispositivos Android activos ya compatibles
Fuente: Documentación para desarrolladores de Android
Este avance se nota en el catálogo. Motores como Unity o Unreal Engine ofrecen Vulkan como opción de renderizado en Android, y los juegos para Android en Plarium muestran hasta qué punto la estrategia y el rol con escenarios detallados se han vuelto habituales en el móvil. Para el usuario, la API es invisible, pero determina si una batalla con decenas de unidades se mueve con fluidez o si el teléfono empieza a perder fotogramas al cabo de unos minutos.
05 ANGLE: OpenGL ES ejecutándose sobre Vulkan
La transición no obliga a tirar el código antiguo. Android 15 incluye ANGLE como capa opcional que traduce las llamadas de OpenGL ES a Vulkan. En lugar de depender de un controlador de OpenGL distinto para cada fabricante, el sistema puede usar una sola implementación estándar, lo que mejora la compatibilidad y, en algunos casos, el rendimiento. Desde Android 17, una aplicación puede indicar en su manifiesto que prefiere ANGLE como controlador, aunque el sistema no está obligado a usarlo.
La recomendación oficial es clara: los proyectos nuevos deberían empezar directamente con Vulkan. Quien todavía esté decidiendo cómo construir su aplicación puede revisar las diferencias entre enfoques nativo, multiplataforma e híbrido, ya que solo el desarrollo nativo o un motor de juegos dan acceso pleno a este nivel de control gráfico.
06 Batería y temperatura: la ventaja menos visible
Que la CPU trabaje menos no solo libera rendimiento, también reduce consumo. Samsung lo comprobó con una versión experimental de su lanzador TouchWiz basada en la nueva API: según se informó en 2016, el consumo bajó hasta un 6 %, el equivalente a unos 40 minutos más de batería en el Galaxy S7 Edge, y la respuesta al abrir aplicaciones mejoró un 5,76 %.
07 Cuándo compensa el salto a la API explícita
Vulkan no es mejor en todos los casos. Su curva de aprendizaje es dura, y una implementación torpe puede rendir peor que un OpenGL ES bien optimizado. Para una aplicación con gráficos sencillos, una interfaz 2D o un prototipo, OpenGL ES sigue siendo perfectamente válido, y ANGLE le ofrece una vía para seguir funcionando sobre controladores modernos. Ya en 2015, al anunciar el soporte, Google planteó como elección la simplicidad de OpenGL ES o el control explícito de Vulkan, y avisó de que ambas convivirían durante varios años.
Preguntas frecuentes
OpenGL ES funciona como una máquina de estados: la aplicación activa una textura, cambia un parámetro y lanza una orden de dibujo, y el controlador de la GPU traduce todo eso, lo valida y decide cuándo enviarlo al chip. Vulkan es una API explícita: la aplicación declara de antemano los estados de la canalización gráfica, reserva y gestiona su propia memoria y sincroniza ella misma la CPU con la GPU. El controlador se vuelve más delgado y desaparece gran parte del trabajo invisible que OpenGL ES repite en cada fotograma, a cambio de escribir bastante más código.
Vulkan está disponible en Android a partir de la versión 7.0, que corresponde al nivel de API 24. Todos los dispositivos de 64 bits con Android 10 o posterior admiten Vulkan 1.1 y, según la documentación oficial, el 88 % de los dispositivos Android activos ya es compatible. Google ha definido además el perfil Android Baseline, un conjunto mínimo de funciones que los desarrolladores pueden dar por sentado en cualquier dispositivo compatible, lo que reduce la fragmentación entre fabricantes de GPU.
En una escena con muchos objetos, el controlador tiene que procesar una a una miles de llamadas de dibujo, y esa sobrecarga satura la CPU antes que la GPU. La documentación para desarrolladores de Android cita entre las ventajas de Vulkan una arquitectura más eficiente con menor sobrecarga de CPU en el controlador de gráficos. Menos trabajo del controlador deja más margen de procesador para la lógica, la física o la inteligencia artificial de la escena, algo que se nota sobre todo en dispositivos de gama media.
Que la CPU trabaje menos no solo libera rendimiento, también reduce consumo. Samsung lo comprobó con una versión experimental de su lanzador TouchWiz basada en la nueva API: el consumo bajó hasta un 6 %, el equivalente a unos 40 minutos más de batería en el Galaxy S7 Edge, y la respuesta al abrir aplicaciones mejoró un 5,76 %. Con el calor pasa lo mismo: repartir la carga entre varios núcleos calienta menos que exprimir uno solo, y evitar picos de CPU ayuda a mantener el rendimiento estable durante sesiones largas.
ANGLE es una capa opcional, incluida en Android 15, que traduce las llamadas de OpenGL ES a Vulkan. En lugar de depender de un controlador de OpenGL distinto para cada fabricante, el sistema puede usar una sola implementación estándar, lo que mejora la compatibilidad y, en algunos casos, el rendimiento. Desde Android 17, una aplicación puede indicar en su manifiesto que prefiere ANGLE como controlador, aunque el sistema no está obligado a usarlo. Gracias a esa capa, el código antiguo de OpenGL ES puede seguir funcionando sobre controladores modernos.
Vulkan no es mejor en todos los casos: su curva de aprendizaje es dura y una implementación torpe puede rendir peor que un OpenGL ES bien optimizado. Para una aplicación con gráficos sencillos, una interfaz 2D o un prototipo, OpenGL ES sigue siendo perfectamente válido. La balanza se inclina hacia Vulkan cuando la escena tiene miles de objetos, cuando la CPU es el límite o cuando la duración de la batería forma parte de la experiencia.
La recomendación oficial es que los proyectos nuevos empiecen directamente con Vulkan. Motores como Unity o Unreal Engine ya ofrecen Vulkan como opción de renderizado en Android, así que un equipo que use un motor lo activa desde el propio motor. Fuera de ahí, solo el desarrollo nativo da acceso pleno a este nivel de control gráfico: un enfoque multiplataforma o híbrido se queda en lo que la capa intermedia exponga. Por eso la elección de tecnología conviene tomarla antes de empezar el proyecto.
Fuentes consultadas
Sobre el autor
Development Manager en appyweb
Dirige el equipo de desarrollo de appyweb: aplicaciones web y móviles, SaaS, integraciones y arquitectura de software.
Ver perfil y artículos → Ver perfil en LinkedIn ↗