Qt 3D: Exemple QML avec plusieurs fenêtres de visualisation
Exemple QML illustrant le rendu d'un graphe de scène à partir de plusieurs fenêtres de visualisation.

Lafonctionnal ité« Multi Viewport » rend un graphe de scène depuis le point de vue de quatre caméras virtuelles dans les quatre quadrants d’une fenêtre. Il s’agit d’une configuration courante pour les outils de CAO 3D ou de modélisation ; elle peut également être adaptée pour faciliter le rendu d’un rétroviseur dans un jeu de course automobile ou de l’affichage d’une caméra de vidéosurveillance.
Pour plus d’informations, consultez la section « FrameGraph multi-fenêtres ».
Exécution de l'exemple
Vous pouvez exécuter l’exemple à partir de :
- Qt Creator
Ouvrez le mode « Welcome » et sélectionnez l’exemple dans « Examples ». Pour plus d’informations, consultez «Qt Creator: Tutoriel : Compiler et exécuter».
- Qt Extension for Visual Studio Code
Exécutez la commande « Qt: Open Qt examples » depuis Command Palette, puis sélectionnez l’exemple dans la liste. Pour plus d’informations, consultez Qt Extension for Visual Studio Code: Tutoriel : Compiler et exécuter.
Création de plusieurs RenderViews
À l’aide des règles définies dans « Framegraph Rules », nous construisons cinq objets RenderView à partir du 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 }
}
}L’ordre est important. Si le nœud ClearBuffers se trouvait en dernier lieu au lieu d’être le premier, cela se traduirait par un écran noir pour la simple raison que tout serait effacé juste après avoir été si soigneusement rendu. Pour une raison similaire, il ne pourrait pas être utilisé comme racine du FrameGraph, car cela entraînerait un appel visant à effacer l’intégralité de l’écran pour chacune de nos fenêtres d’affichage.
Bien que l’ordre de déclaration du FrameGraph soit important, « Qt 3D » est capable de traiter chaque RenderView en parallèle, car chaque RenderView est indépendante des autres pour ce qui est de générer un ensemble de RenderCommands à soumettre tant que l’état de la RenderView est actif.
Qt 3D utilise une approche du parallélisme basée sur les tâches, qui s’adapte naturellement au nombre de cœurs disponibles. Les RenderCommands des RenderViews peuvent être générées en parallèle sur plusieurs cœurs, et tant que l’on veille à soumettre les RenderViews dans le bon ordre sur le thread de soumission OpenGL dédié, la scène résultante sera correctement rendue.
© 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.