Scène graphique - Metal sous QML
Montre comment effectuer un rendu directement avec Metal dans une scène Qt Quick.
Qt Quick avec superposition de texte" src="images/metalunderqml-example.jpg" title="« Squircle » animé rendu avec Metal dans une scène Qt Quick avec superposition de texte"/>
L'exemple « Metal sous QML » montre comment une application peut utiliser les signaux ` QQuickWindow::beforeRendering()` et ` QQuickWindow::beforeRenderPassRecording()` pour dessiner du contenu Metal personnalisé dans une scène Qt Quick. Ce signal est émis au début de chaque image, avant que le graphe de scène ne commence son rendu ; ainsi, tous les appels de dessin Metal effectués en réponse à ce signal s'empileront sous les éléments Qt Quick. Il existe deux signaux, car les commandes Metal personnalisées sont enregistrées dans le même tampon de commandes avec le même encodeur de commandes de rendu que celui utilisé par le graphe de scène. La méthode `beforeRendering()` seule ne suffit pas à cet effet, car elle est émise au début de l’image, avant qu’un `MTLRenderCommandEncoder` ne soit disponible. En se connectant également à `beforeRenderPassRecording()`, l’application peut accéder aux objets natifs nécessaires.
Sinon, les applications qui souhaitent effectuer le rendu de contenu Metal par-dessus la scène « Qt Quick » peuvent le faire en se connectant aux signaux « QQuickWindow::afterRendering() » et « QQuickWindow::afterRenderPassRecording() ».
Dans cet exemple, nous verrons également comment il est possible d’exposer au QML des valeurs qui influencent le rendu Metal. Nous animons la valeur seuil à l’aide d’un NumberAnimation dans le fichier QML, et cette valeur est utilisée par le programme de shader Metal qui dessine les « squircles ».
Cet exemple est en grande partie équivalent aux exemples « OpenGL sous QML », « Direct3D 11 sous QML » et « Vulkan sous QML » : ils affichent tous le même contenu personnalisé, mais via des API natives différentes.
© 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.