En esta página

Cambios en Qt OpenGL

Qt 6 son el resultado del esfuerzo consciente por hacer el framework más eficiente y fácil de usar.

Intentamos mantener la compatibilidad binaria y de código fuente de todas las API públicas en cada versión. Pero algunos cambios eran inevitables en un esfuerzo por hacer de Qt un framework mejor.

En este tema resumimos esos cambios en Qt OpenGLy proporcionamos una guía para manejarlos.

Clases obsoletas eliminadas

El módulo Qt OpenGL estuvo obsoleto durante la vida de Qt 5, y las clases que contenía han sido eliminadas en Qt 6.

Esto se refiere específicamente a las clases prefijadas por QGL.

Clases QOpenGL migradas

En Qt 5, se añadió a Qt Gui un conjunto de clases de reemplazo compatibles con OpenGL. Esto se hizo para soportar OpenGL como API gráfica multiplataforma que servía de base para los gráficos en Qt.

En Qt 6, estas clases se han migrado al módulo Qt OpenGL módulo. Siguen siendo utilizables y totalmente compatibles con las aplicaciones que dependen directamente de OpenGL. Sin embargo, ya no se consideran fundacionales, ya que Qt se ha ampliado para soportar otras APIs gráficas en su base, como Direct3D, Metal y Vulkan.

El código de aplicación existente seguirá funcionando en gran medida, pero ahora deberá incluir Qt OpenGL en los archivos de proyecto, así como incluir las cabeceras si antes se incluían indirectamente a través de Qt Gui.

Nota: Una excepción notable es QOpenGLContext, que todavía reside en Qt Gui.

La clase QOpenGLWidgets

Otra excepción es la clase QOpenGLWidget. Esta ha sido movida a un nuevo módulo llamado Qt OpenGL Widgets y debería incluirse desde allí.

Seleccionando el backend OpenGL para RHI

Además de ajustar los archivos del proyecto e incluir las cabeceras, la aplicación también debería establecer manualmente el backend de renderizado a OpenGL para poder utilizar esta funcionalidad cuando se trabaje con Qt Quick. Por defecto, Qt utilizará la API gráfica más apropiada en la plataforma de destino. Consulte la documentación de renderizado RHI para más detalles.

Eliminación de ANGLE

En Windows, ANGLE, un traductor de OpenGL ES a Direct 3D de terceros, ya no está incluido en Qt 6. Esto significa que Qt::AA_UseOpenGLES y la variable de entorno QT_OPENGL=angle ya no tienen ningún efecto. En las compilaciones dinámicas de OpenGL no hay un fallback automático a ANGLE en caso de que OpenGL-proper falle al inicializarse. Para aplicaciones basadas en QWindow o QWidget que utilizan OpenGL directamente, por ejemplo a través de QOpenGLWidget, esto significa que OpenGL-proper es la única opción en tiempo de ejecución. Sin embargo, el uso de una implementación de software OpenGL pura, como Mesa llvmpipe que se incluye con los paquetes Qt precompilados, sigue estando disponible.

Para aplicaciones Qt Quick y Qt Quick 3D, Qt 6 introduce soporte para Direct 3D 11, Vulkan y Metal, además de OpenGL. En Windows, Qt 6 utiliza por defecto Direct 3D, por lo que el efecto de la eliminación de ANGLE se ve disminuido por la adición de soporte a otras APIs gráficas.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.