Qt 3D: QML-Beispiel für mehrere Ansichtsfenster
Ein QML-Beispiel, das die Darstellung eines Szenengraphen aus mehreren Ansichtsfenstern veranschaulicht.

„Multi Viewport“ rendert einen Szenengraphen aus der Perspektive von vier virtuellen Kameras in die vier Quadranten eines Fensters. Dies ist eine gängige Konfiguration für 3D-CAD- oder Modellierungstools und könnte angepasst werden, um beispielsweise die Darstellung eines Rückspiegels in einem Autorennspiel oder die Anzeige einer CCTV-Kamera zu unterstützen.
Weitere Informationen finden Sie unter „Ein FrameGraph mit mehreren Ansichtsfenstern“.
Ausführen des Beispiels
Sie können das Beispiel wie folgt ausführen:
- Qt Creator
Öffnen Sie den Modus „ Welcome “ und wählen Sie das Beispiel unter „ Examples “ aus. Weitere Informationen finden Sie unter „Qt Creator: Tutorial: Erstellen und Ausführen“.
- Qt Extension for Visual Studio Code
Führen Sie den Befehl „ Qt: Open Qt examples “ über „ Command Palette “ aus und wählen Sie das Beispiel aus der Liste aus. Weitere Informationen finden Sie unter „Qt Extension for Visual Studio Code “: Tutorial: Erstellen und Ausführen.
Erstellen mehrerer RenderViews
Mithilfe der in „Framegraph Rules“ definierten Regeln erstellen wir fünf „RenderView“-Objekte aus dem „FrameGraph“:
Viewport {
id: mainViewport
normalizedRect: Qt.rect(0, 0, 1, 1)
ClearBuffers {
buffers: ClearBuffers.ColorDepthBuffer
clearColor: Qt.rgba(0.6, 0.6, 0.6, 1.0)
}
Viewport {
id: topLeftViewport
normalizedRect: Qt.rect(0, 0, 0.5, 0.5)
CameraSelector { id: cameraSelectorTopLeftViewport }
}
Viewport {
id: topRightViewport
normalizedRect: Qt.rect(0.5, 0, 0.5, 0.5)
CameraSelector { id: cameraSelectorTopRightViewport }
}
Viewport {
id: bottomLeftViewport
normalizedRect: Qt.rect(0, 0.5, 0.5, 0.5)
CameraSelector { id: cameraSelectorBottomLeftViewport }
}
Viewport {
id: bottomRightViewport
normalizedRect: Qt.rect(0.5, 0.5, 0.5, 0.5)
CameraSelector { id: cameraSelectorBottomRightViewport }
}
}Die Reihenfolge ist wichtig. Würde der „ClearBuffers“-Knoten an letzter statt an erster Stelle stehen, würde dies zu einem schwarzen Bildschirm führen – aus dem einfachen Grund, dass alles unmittelbar nach dem sorgfältigen Rendern wieder gelöscht würde. Aus einem ähnlichen Grund könnte er nicht als Wurzel des FrameGraphs verwendet werden, da dies zu einem Aufruf führen würde, den gesamten Bildschirm für jedes unserer Ansichtsfenster zu löschen.
Obwohl die Deklarationsreihenfolge des FrameGraphs wichtig ist, ist „ Qt 3D “ in der Lage, jedes „RenderView“-Objekt parallel zu verarbeiten, da jedes „RenderView“-Objekt unabhängig von den anderen ist, was die Erzeugung einer Reihe von „RenderCommands“ betrifft, die übermittelt werden sollen, solange der Zustand des „RenderView“-Objekts gültig ist.
Qt 3D nutzt einen aufgabenbasierten Ansatz zur Parallelisierung, der sich auf natürliche Weise mit der Anzahl der verfügbaren Kerne skaliert. Die RenderCommands für die RenderViews können parallel über viele Kerne hinweg generiert werden, und solange wir darauf achten, die RenderViews in der richtigen Reihenfolge im dedizierten OpenGL-Übermittlungs-Thread zu übermitteln, wird die resultierende Szene korrekt gerendert.
© 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.