Änderungen an Qt Quick 3D
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. Teile der Qt Quick 3D -API wurden erheblich modifiziert.
In diesem Abschnitt fassen wir diese Änderungen in „ Qt Quick 3D “ zusammen und geben Hinweise zu deren Handhabung.
RHI
Ab Qt 6.0 erfolgt die Standardimplementierung von „ Qt Quick “ stets über eine Grafikabstraktionsschicht, das Qt Rendering Hardware Interface (RHI), das vom Modul „ QtGui “ bereitgestellt wird. Das bedeutet, dass im Gegensatz zu Qt 5 keine direkten OpenGL-Aufrufe vom Szenengraphen ausgeführt werden. Stattdessen erfasst er Ressourcen- und Zeichnungsbefehle mithilfe der RHI-APIs, die den Befehlsstrom anschließend in OpenGL-, Vulkan-, Metal- oder Direct 3D-Aufrufe übersetzen. Auch die Shader-Verarbeitung wird vereinheitlicht, indem Shader-Code einmal geschrieben, in SPIR-V kompiliert und anschließend in die für die verschiedenen Grafik-APIs geeignete Sprache übersetzt wird.
Für „ Qt Quick 3D “ ist die größte Änderung in Qt 6.0 die Umstellung auf das gemeinsame Rendering Hardware Interface, wodurch „ Qt Quick 3D “ nun neben OpenGL und OpenGL ES auch auf Direct3D, Metal und Vulkan ausgeführt werden kann.
Qt Quick Qt Quick 3D sind in dieser Hinsicht nun vollständig vereinheitlicht. Alle Konfigurationseinstellungen im Zusammenhang mit dem RHI – beispielsweise die Wahl der Grafik-API für das Rendering – gelten für beide.
Weitere Details finden Sie unter „Qt Quick 3D – Grafikanforderungen “.
Weitere API-Änderungen
QML-Importversion
Ab Qt 6.0 entspricht die Versionsnummer für Qml-Importanweisungen der Qt-Versionsnummer. Es ist nun auch möglich, ein Modul ohne Angabe einer Version zu importieren: Dabei wird die neueste Version des Moduls importiert.
„Lighting“
Light brightness stellt nun einen Energiemultiplikator dar, dessen Standardwert 1,0 ist, während Qt 5 einen Prozentwert mit dem Standardwert 100 verwendete. In der Praxis bedeutet dies, dass alle Werte für „ brightness “ durch 100 geteilt werden sollten.
SceneEnvironment.probeBrightness wurde in „ probeExposure “ umbenannt und ebenfalls als Multiplikator mit dem Standardwert 1,0 neu definiert. Das heißt, alle „ probeBrightness “-Werte sollten in „ probeExposure “ umbenannt und durch 100 geteilt werden.
AreaLight wurde aus Leistungsgründen entfernt. In vielen Fällen kann es durch „ SpotLight “ ersetzt werden, das in „ Qt Quick 3D “ 5.15 hinzugefügt wurde.
Benutzerdefinierte Materialien
Die API für benutzerdefinierte Materialien wurde in Version 6.0 komplett überarbeitet. Das bedeutet, dass alle bestehenden benutzerdefinierten Materialien grundlegend neu geschrieben werden müssen. Einzelheiten zur neuen API finden Sie in der Dokumentation zu „ CustomMaterial “.
Nachbearbeitungseffekte
Effect wurden erweitert, um Shader-Code zu ermöglichen, der dem von „ CustomMaterial “ sehr nahekommt und hinsichtlich Struktur und integrierter Schlüsselwörter denselben Mustern folgt. Das bedeutet, dass bestehende Effekte mit benutzerdefiniertem Shader-Code migriert werden müssen, bevor sie in Qt 6.0 funktionieren können. Weitere Informationen finden Sie in der Dokumentation zu „ Effect “.
Principled Material
Der QML-Typ „ PrincipledMaterial “ wurde in „ Qt Quick “ 6.0 erheblich verbessert und folgt nun stärker den Prinzipien des physikalisch basierten Renderings. Importierte Modelle sollten nun korrekt gerendert werden, ohne dass die Eigenschaften der Materialien geändert werden müssen. Vorhandene Materialien müssen angepasst werden, um etwaige Kompensationen für frühere Ungenauigkeiten rückgängig zu machen.
| PrincipledMaterial in Qt 5 | PrincipledMaterial in Qt 6 |
|---|---|
|
|
Bei einigen Eigenschaften haben sich die Standardwerte geändert:
- metalness Standardwert ist nun 0 statt 1.
- specularAmount Standardwert ist nun 0,5 statt 0.
Standardmaterial
Bei einigen Eigenschaften ändern sich die Standardwerte:
- specularRoughness Standardwert ist 0 statt 50.
Vordefinierte Materialien
QtQuick3D on 6.0 enthält keine vordefinierten Materialien. In zukünftigen Versionen hinzugefügte Materialien werden wahrscheinlich nicht mit den alten kompatibel sein. Der Import „Materials“ existiert nicht mehr. (Der Typ „ CustomMaterial “ wurde in den Basisimport „ QtQuick3D “ verschoben.)
Dies sind die Material-Qml-Typen, die in Qt 6.0 entfernt wurden:
- AluminumAnodizedEmissiveMaterial
- AluminumAnodizedMaterial
- AluminumBrushedMaterial
- AluminumEmissiveMaterial
- AluminiumMaterial
- Kupfer-Material
- Material: Mattglas
- Material aus mattiertem Glas (Ein-Durchgang)
- Glasmaterial
- Glas-Refraktionsmaterial
- Papier-Kunstmaterial
- Papier-Büromaterial
- Kunststoff-strukturiertes-rotes-emissives-Material
- Kunststoff, strukturiertes, rotes Material
- Stahl, gefräst, konzentrisch
Tessellation und Displacement-Maps
Der Tessellationsmodus für Modelle wurde aufgrund der verstärkten Fokussierung auf die Unterstützung eingebetteter Hardware entfernt. Infolgedessen wurde zudem die Unterstützung für Displacement-Maps aus den Materialien entfernt. Ähnliche Effekte lassen sich mit einem „ custom material “ erzielen.
Qt Quick Items als untergeordnete Elemente von 3D- s Node
Obwohl syntaktisch identisch, unterscheidet sich die interne Behandlung von 2D-Unterelementen erheblich. In Qt 6.0 findet kein impliziter Render-to-Texture-Schritt statt. Stattdessen wird der Inhalt des 2D-„ Qt Quick “ inline mit der entsprechenden perspektivischen Projektion im selben Render-Durchgang gerendert, was eine bessere Leistung, einen geringeren Ressourcenverbrauch und in einigen Fällen möglicherweise eine verbesserte visuelle Wiedergabetreue bietet (beispielsweise bei „ Text “). Einen Überblick finden Sie unter „Qt Quick 3D: Szenen mit 2D-Inhalten “.
Wenn es aus irgendeinem Grund wichtig ist, durch eine Textur hindurchzusehen (Clipping, Deckkraft), legen Sie den 2D- Item -Unterbaum explizit als Ebene fest, indem Sie „ layer.enabled: true “ setzen. Auf diese Weise entspricht das Verhalten eher dem von Qt 5.15.
Der 2D-Inhalt wird nicht mehr am Ursprung des übergeordneten Knotens zentriert. Stattdessen wird die obere linke Ecke des 2D-Elements der obersten Ebene am Ursprung des 3D-Knotens platziert. Daher wird das 2D-Element der obersten Ebene häufig einen Anker angeben wollen, z. B. ` anchors.centerIn: parent`, um Ergebnisse zu erzielen, die denen von Qt 5.15 entsprechen.
© 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.

