Qt 3D: Exemple QML Multi Viewport
Un exemple QML qui démontre le rendu d'un diagramme de scène à partir de plusieurs points de vue.

Multi Viewport rend un Scenegraph du 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 ou de modélisation 3D. Elle peut également être adaptée pour faciliter le rendu d'un rétroviseur dans un jeu de course automobile ou l'affichage d'une caméra de vidéosurveillance.
Pour plus d'informations, voir A Multi Viewport FrameGraph.
Exécution de l'exemple
Pour exécuter l'exemple à partir de Qt CreatorOuvrez le mode Welcome et sélectionnez l'exemple à partir de Examples. Pour plus d'informations, voir Qt Creator: Tutorial : Construire et exécuter.
Création de plusieurs RenderViews
En utilisant les 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 était le dernier au lieu du premier, il en résulterait un écran noir pour la simple raison que tout serait effacé juste après avoir été si soigneusement rendu. Pour la même raison, il ne pourrait pas être utilisé comme racine du FrameGraph, car cela entraînerait un appel à l'effacement de tout l'écran pour chacune de nos fenêtres.
Bien que l'ordre de déclaration du FrameGraph soit important, Qt 3D est en mesure de traiter chaque RenderView en parallèle car chaque RenderView est indépendant des autres dans le but de générer un ensemble de RenderCommands à soumettre pendant que l'état du RenderView est en vigueur.
Qt 3D utilise une approche du parallélisme basée sur les tâches qui augmente naturellement avec le nombre de cœurs disponibles. Les RenderCommands pour les RenderViews peuvent être générés en parallèle sur plusieurs cœurs, et tant que nous prenons soin de soumettre les RenderViews dans le bon ordre sur le thread de soumission OpenGL dédié, la scène résultante sera rendue correctement.
© 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.