Motor de renderizado Impeller
¿Qué es Impeller y cómo habilitarlo?
¿Qué es Impeller?
#Impeller proporciona un nuevo tiempo de ejecución de renderizado para Flutter. Impeller precompila un conjunto más pequeño y simple de shaders al momento de compilación del motor para que no se compilen en tiempo de ejecución.
Para ver una introducción en video a Impeller, consulta la siguiente charla de Google I/O 2023.
Impeller tiene los siguientes objetivos:
- Rendimiento predecible: Impeller compila todos los shaders y la reflexión fuera de línea en el momento de la compilación. Construye todos los objetos de estado del pipeline por adelantado. El motor controla el almacenamiento en caché y realiza el almacenamiento en caché de forma explícita.
- Instrumentable: Impeller etiqueta e identifica todos los recursos gráficos, como texturas y búferes. Puede capturar y persistir animaciones en el disco sin afectar el rendimiento de renderizado por fotograma.
- Portátil: Flutter no vincula a Impeller con una API de renderizado de cliente específica. Puedes crear shaders una vez y convertirlos a formatos específicos del backend, según sea necesario.
- Aprovecha las API de gráficos modernas: Impeller utiliza, pero no depende de, las características disponibles en las API modernas como Metal y Vulkan.
- Aprovecha la concurrencia: Impeller puede distribuir cargas de trabajo de un solo fotograma a través de múltiples hilos, si es necesario.
Disponibilidad
#¿Dónde puedes usar Impeller? Para obtener información detallada, consulta la página ¿Puedo usar Impeller?.
iOS
#Impeller es el único motor de renderizado compatible en iOS sin capacidad para cambiar a Skia.
Android
#Impeller está disponible y habilitado de forma predeterminada en Android API 29+. En dispositivos que ejecutan versiones anteriores de Android o que no son compatibles con Vulkan, Impeller recurre al renderizador OpenGL heredado. No es necesaria ninguna acción por tu parte para este comportamiento alternativo.
-
Para deshabilitar Impeller al depurar, pasa
--no-enable-impelleral comandoflutter run.flutter run --no-enable-impeller -
Para deshabilitar Impeller al desplegar tu aplicación, agrega la siguiente configuración al archivo
AndroidManifest.xmlde tu proyecto bajo la etiqueta<application>:
<meta-data
android:name="io.flutter.embedding.android.EnableImpeller"
android:value="false" />
Web
#Flutter en la web ofrece dos renderizadores --
canvaskit y skwasm -- los cuales actualmente usan Skia.
Podrían usar Impeller en el futuro.
macOS
#Puedes probar Impeller para macOS detrás de una bandera. En una versión futura, se eliminará la capacidad de optar por no usar Impeller.
Para habilitar Impeller en macOS al depurar,
pasa --enable-impeller al comando flutter run.
flutter run --enable-impeller
Para habilitar Impeller en macOS al desplegar tu aplicación,
añade las siguientes etiquetas debajo de la etiqueta de nivel superior
<dict> en el archivo Info.plist de tu aplicación.
<key>FLTEnableImpeller</key>
<true />
Errores y problemas
#El equipo continúa mejorando el soporte de Impeller.
Si encuentras problemas de rendimiento o fidelidad
con Impeller en cualquier plataforma,
registra un problema en el rastreador de GitHub.
Prefija el título del problema con [Impeller] e
incluye un pequeño caso de prueba reproducible.
Por favor, incluye la siguiente información cuando envíes un problema para Impeller:
- El dispositivo en el que estás ejecutando la aplicación, incluyendo la información del chip.
- Capturas de pantalla o grabaciones de cualquier problema visible.
- Una exportación del trace de rendimiento. Comprime el archivo en un zip y adjúntalo al problema de GitHub.
Arquitectura
#Para conocer más detalles sobre el diseño y la arquitectura de Impeller, consulta el archivo README.md en el árbol de fuentes.
Información adicional
#- Preguntas frecuentes
- El sistema de coordenadas de Impeller
- Cómo configurar Xcode para capturas de fotogramas de GPU con Metal
- Aprender a leer capturas de fotogramas de GPU
- Cómo habilitar la validación de Metal para aplicaciones de línea de comandos
- Cómo Impeller soluciona la falta de búferes uniformes en OpenGL ES 2.0
- Guía para escribir shaders eficientes
- Cómo funciona la mezcla de colores (color blending) en Impeller
A menos que se indique lo contrario, la documentación de este sitio refleja Flutter 3.44.0. Página actualizada por última vez el 2026-05-05. Ver código fuente oreportar un problema.