Hace pocos dias Qt Company dio a conocer el lanzamiento de la nueva version de «Qt 6.11», una version que se aleja de las actualizaciones menores para introducir motores de renderizado completamente nuevos, acercar el desarrollo de interfaces 3D al nivel de los motores de videojuegos y abrazar la modernización en la gestión de tareas asíncronas con C++.
Con soporte oficial para Android 16 y la capacidad de entregar aplicaciones modulares mediante Google Play Feature Delivery, Qt 6.11 no solo acelera el rendimiento visual, sino que adapta el framework a las demandas de distribución de software actuales.
Principales novedades de Qt 6.11
Sin dudas una de las novedqades mas importantes de este lanzamiento es el debut del módulo Qt Canvas Painter. Diseñado para emular la especificación del contexto 2D de HTML Canvas, este motor delega la renderización directamente al RHI (Rendering Hardware Interface) de Qt. Esto significa que los gráficos 2D ahora aprovechan la aceleración por hardware pura a través de Vulkan, Metal, Direct3D u OpenGL.
El impacto es masivo: en pruebas internas, Qt Canvas Painter superó en velocidad al clásico QPainter (con backend OpenGL) por un factor de 2x en portátiles de estación de trabajo, 5x en tabletas Android de gama de entrada y hasta 10x en dispositivos de gama alta como la Samsung Galaxy Tab S8. Más allá de la velocidad bruta, el módulo incorpora herramientas de diseño avanzadas:
- Sombras de encuadre (QCanvasBoxShadow) y degradados configurables.
- Patrones de cuadrícula nativos (QCanvasGridPattern).
- Efectos de color integrados para alterar el brillo, contraste, saturación y transparencia en tiempo real.
Otra de las novedades es la actualización del módulo Qt Quick 3D, la cual introduce técnicas de renderizado avanzado esenciales para el realismo en tiempo real:
- Iluminación Global (SSGI) y Reflejos (SSR): Se añade soporte para Screen Space Global Illumination, simulando cómo la luz rebota entre superficies, y Screen Space Reflections para generar reflejos realistas de forma dinámica, eliminando la dependencia de mapas de luz precalculados (lightmaps).
- Vectores de Movimiento: El suavizado de bordes (anti-aliasing) de objetos en movimiento ahora es mucho más nítido gracias a la generación de vectores de movimiento por objeto.
- Control de Pases de Renderizado: Los desarrolladores ahora pueden configurar pases de renderizado personalizados directamente desde QML. Gracias a las nuevas API de capas y etiquetas, es posible redirigir elementos a búferes de destino específicos, aplicar máscaras de capa o inyectar efectos de postprocesamiento a voluntad.
Qt TaskTree: Asincronía declarativa en C++
La gestión de hilos y operaciones asíncronas en C++ recibe un rediseño experimental pero prometedor con el módulo Qt TaskTree. Este sistema propone un enfoque declarativo para definir flujos de trabajo complejos, resolviendo el clásico problema de las «incompatibilidades de API» al unificar diversas llamadas asíncronas bajo una interfaz estándar.
El modelo se basa en cuatro pilares:
- Recetas (Recipes): Objetos reutilizables que describen la lógica del flujo de trabajo.
- Grupos: Entidades que aplican políticas de ejecución a las tareas secundarias.
- Almacenamiento: Mecanismos para compartir datos de forma segura entre tareas concurrentes.
- Iteradores: Controladores para repetir y reejecutar procesos.
Gráficos de datos, Redes y Herramientas QML
El ecosistema de herramientas satélite también recibe actualizaciones:
- Qt Graphs: La visualización de datos se vuelve altamente personalizable, pues el nuevo tipo CustomSeries permite delegar el dibujado de cada elemento del gráfico a código del usuario. En el espacio 3D, gráficos como QSurface3DSeries y QScatter3DSeries ahora soportan instancias múltiples e independientes de los ejes (axisX, axisY, axisZ), permitiendo personalizaciones radicales de color, degradados y posicionamiento.
- Qt OpenAPI y Redes: El nuevo módulo Qt OpenAPI permite generar automáticamente código de cliente HTTP (basado en Qt Networks) a partir de especificaciones YAML de API RESTful. Además, el servidor HTTP mejora la gestión de hilos, y las peticiones de red ahora soportan parámetros TCP Keep Alive configurables para evitar el cierre prematuro de conexiones inactivas.
- Servidor de Lenguaje QML (LSP): La integración con entornos de desarrollo (IDE) da un salto cualitativo. El servidor LSP ahora vincula las definiciones de tipos QML directamente con su código fuente en C++, permitiendo a los desarrolladores navegar bidireccionalmente entre el diseño de la interfaz y la lógica de backend (identificando objetos QML desde C++) con un solo clic.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
Continúar leyendo...