Auf dieser Seite

Änderungen an Qt OpenGL

Qt 6 sind das Ergebnis bewusster Bemühungen, das Framework effizienter und benutzerfreundlicher zu gestalten.

Wir bemühen uns, bei jeder Version die Binär- und Quellkompatibilität für alle öffentlichen APIs aufrechtzuerhalten. Einige Änderungen waren jedoch unvermeidlich, um Qt zu einem besseren Framework zu machen.

In diesem Thema fassen wir diese Änderungen zusammen Qt OpenGLund geben Hinweise zu deren Handhabung.

Entfernte veraltete Klassen

Das Qt OpenGL Modul war bereits während der gesamten Laufzeit von Qt 5 veraltet, und die darin enthaltenen Klassen wurden in Qt 6 entfernt.

Dies bezieht sich insbesondere auf die Klassen mit den Präfixen „ QGL “.

QOpenGL-Klassen migriert

In Qt 5 wurde Qt GUI um einen Satz von Ersatzklassen zur OpenGL-Unterstützung erweitert. Dies geschah, um OpenGL als plattformübergreifende Grafik-API zu unterstützen, die als Grundlage für die Grafik in Qt diente.

In Qt 6 wurden diese in das Qt OpenGL Modul migriert. Sie sind weiterhin nutzbar und werden für Anwendungen, die direkt auf OpenGL angewiesen sind, vollständig unterstützt. Sie gelten jedoch nicht mehr als grundlegend, da Qt erweitert wurde, um andere Grafik-APIs wie Direct3D, Metal und Vulkan in seiner Basis zu unterstützen.

Bestehender Anwendungscode wird größtenteils weiterhin funktionieren, sollte nun jedoch Qt OpenGL in die Projektdateien einbinden sowie die Header einbinden, falls diese zuvor indirekt über Qt GUI eingebunden wurden.

Hinweis: Eine bemerkenswerte Ausnahme bildet „ QOpenGLContext “, das sich weiterhin in Qt GUI befindet.

Die Klasse `QOpenGLWidgets`

Eine weitere Ausnahme bildet die Klasse „ QOpenGLWidget “. Diese wurde in ein neues Modul namens Qt OpenGL Widgets und sollte von dort aus eingebunden werden.

Auswahl des OpenGL-Backends für RHI

Neben der Anpassung der Projektdateien und dem Einbinden der Header sollte die Anwendung das Rendering-Backend manuell auf OpenGL setzen, um diese Funktionalität bei der Arbeit mit „ Qt Quick “ nutzen zu können. Standardmäßig verwendet Qt die für die Zielplattform am besten geeignete Grafik-API. Weitere Einzelheiten finden Sie in der RHI-Rendering-Dokumentation.

Entfernung von ANGLE

Unter Windows ist ANGLE, ein OpenGL-ES-zu-Direct-3D-Konverter eines Drittanbieters, in Qt 6 nicht mehr enthalten. Das bedeutet, dass „ Qt::AA_UseOpenGLES “ und die Umgebungsvariable „ QT_OPENGL=angle “ keine Wirkung mehr haben. Bei dynamischen OpenGL-Builds erfolgt kein automatischer Fallback auf ANGLE, falls die Initialisierung von OpenGL selbst fehlschlägt. Für Anwendungen auf Basis von „ QWindow “ oder „ QWidget “, die OpenGL direkt nutzen, beispielsweise über „ QOpenGLWidget “, bedeutet dies, dass OpenGL selbst die einzige Option zur Laufzeit ist. Die Verwendung einer reinen Software-OpenGL-Implementierung wie Mesa llvmpipe, die in den vorgefertigten Qt-Paketen enthalten ist, ist jedoch weiterhin möglich.

Für Anwendungen unter Qt Quick und Qt Quick 3D führt Qt 6 zusätzlich zu OpenGL Unterstützung für Direct 3D 11, Vulkan und Metal ein. Unter Windows verwendet Qt 6 standardmäßig Direct 3D, sodass die Auswirkungen der Entfernung von ANGLE durch die zusätzliche Unterstützung anderer Grafik-APIs gemildert werden.

© 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.