Graphique de scène - Metal sous QML
Montre comment effectuer un rendu directement avec Metal sous une scène Qt Quick.

L'exemple Metal Under QML montre comment une application peut utiliser les signaux QQuickWindow::beforeRendering() et QQuickWindow::beforeRenderPassRecording() pour dessiner un contenu Metal personnalisé sous une scène Qt Quick. Ce signal est émis au début de chaque image, avant que le graphique de la scène ne commence son rendu, de sorte que tous les appels de dessin Metal effectués en réponse à ce signal s'empilent sous les éléments Qt Quick. Il y a deux signaux, car les commandes Metal personnalisées sont enregistrées dans le même tampon de commande avec le même encodeur de commande de rendu que le graphe de scène utilise. beforeRendering() seul n'est pas suffisant pour cela car il est émis au début de l'image, avant d'avoir un MTLRenderCommandEncoder disponible. En se connectant également à beforeRenderPassRecording(), l'application peut accéder aux objets natifs nécessaires.
Par ailleurs, les applications qui souhaitent rendre le contenu Metal au-dessus de 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'avoir des valeurs exposées à QML qui affectent le rendu de Metal. Nous animons la valeur du seuil à l'aide d'une adresse NumberAnimation dans le fichier QML et cette valeur est utilisée par le programme Metal shader qui dessine les écureuils.
L'exemple est équivalent dans la plupart des cas aux exemples OpenGL sous QML, Direct3D 11 sous QML, et Vulkan sous QML, ils rendent tous le même contenu personnalisé, juste 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.