Die Änderungen an Qt OpenGL
Qt 6 sind das Ergebnis des bewussten Bemühens, das Framework effizienter und benutzerfreundlicher zu gestalten.
Wir versuchen, die Binär- und Quellcodekompatibilität für alle öffentlichen APIs in jeder Version zu erhalten. Einige Änderungen waren jedoch unvermeidlich, um Qt zu einem besseren Framework zu machen.
In diesem Thema fassen wir diese Änderungen in Qt OpenGLzusammen und geben Anleitungen zu deren Handhabung.
Veraltete Klassen entfernt
Das Qt OpenGL Modul war während der Lebensdauer von Qt 5 veraltet, und die Klassen, die es enthielt, wurden in Qt 6 entfernt.
Dies bezieht sich speziell auf die Klassen mit dem Präfix QGL
.
QOpenGL-Klassen migriert
In Qt 5 wurde eine Reihe von OpenGL-Unterstützungsklassen zu Qt Gui hinzugefügt. Dies geschah, um OpenGL als plattformübergreifende Grafik-API zu unterstützen, die als Grundlage für Grafiken in Qt diente.
In Qt 6 wurden diese Klassen in das Qt OpenGL Modul migriert. Für Anwendungen, die direkt auf OpenGL angewiesen sind, sind sie weiterhin nutzbar und werden vollständig unterstützt. Sie werden jedoch nicht mehr als grundlegend angesehen, da Qt erweitert wurde, um andere Grafik-APIs wie Direct3D, Metal und Vulkan in seiner Grundlage zu unterstützen.
Bestehender Anwendungscode wird größtenteils weiterhin funktionieren, sollte aber nun Qt OpenGL in Projektdateien sowie die Header einschließen, wenn diese zuvor indirekt über Qt Gui eingebunden waren.
Hinweis: Eine bemerkenswerte Ausnahme ist QOpenGLContext, das sich immer noch in Qt Gui befindet.
Die QOpenGLWidgets-Klasse
Eine weitere Ausnahme ist die Klasse QOpenGLWidget. Diese wurde in ein neues Modul namens Qt OpenGL Widgets
verschoben und sollte von dort aus eingebunden werden.
Auswählen des OpenGL-Backends für RHI
Neben der Anpassung der Projektdateien und dem Einbinden von Headern sollte die Anwendung auch 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 am besten geeignete Grafik-API auf der Zielplattform. Weitere Einzelheiten finden Sie in der RHI Rendering-Dokumentation.
Entfernung von ANGLE
Unter Windows ist ANGLE, ein OpenGL ES zu Direct 3D Übersetzer eines Drittanbieters, nicht mehr in Qt 6 enthalten. Das bedeutet, dass Qt::AA_UseOpenGLES
und die Umgebungsvariable QT_OPENGL=angle
keine Auswirkungen mehr haben. In dynamischen OpenGL-Builds gibt es keinen automatischen Fallback zu ANGLE, falls OpenGL-proper nicht initialisiert werden kann. Für QWindow oder QWidget basierte Anwendungen, die OpenGL direkt verwenden, zum Beispiel über QOpenGLWidget, bedeutet dies, dass OpenGL-proper die einzige Option zur Laufzeit ist. Die Verwendung einer reinen Software-OpenGL-Implementierung, wie z.B. Mesa llvmpipe, die mit den vorgefertigten Qt-Paketen ausgeliefert wird, ist jedoch weiterhin möglich.
Für Qt Quick und Qt Quick 3D Anwendungen bietet Qt 6 zusätzlich zu OpenGL Unterstützung für Direct 3D 11, Vulkan und Metal. Unter Windows ist Qt 6 standardmäßig auf Direct 3D voreingestellt, daher wird der Effekt der Entfernung von ANGLE durch die zusätzliche Unterstützung anderer Grafik-APIs abgeschwächt.
© 2025 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.