Szenendiagramm - Metal unter QML
Zeigt, wie man direkt mit Metal unter einer Qt Quick Szene rendern kann.
Das Metal Under QML Beispiel zeigt, wie eine Anwendung die Signale QQuickWindow::beforeRendering() und QQuickWindow::beforeRenderPassRecording() nutzen kann, um benutzerdefinierte Metal-Inhalte unter einer Qt Quick Szene zu zeichnen. Dieses Signal wird zu Beginn eines jeden Frames ausgegeben, bevor der Szenegraph mit dem Rendering beginnt. Daher werden alle Metal-Zeichenaufrufe, die als Antwort auf dieses Signal erfolgen, unter den Qt Quick Elementen gestapelt. Es gibt zwei Signale, da die benutzerdefinierten Metal-Befehle im selben Befehlspuffer mit demselben Render Command Encoder aufgezeichnet werden, den auch der Szenengraf verwendet. beforeRendering() allein ist dafür nicht ausreichend, da es am Anfang des Frames ausgegeben wird, bevor ein MTLRenderCommandEncoder verfügbar ist. Indem man sich auch mit beforeRenderPassRecording() verbindet, kann die Anwendung Zugriff auf die notwendigen nativen Objekte erhalten.
Alternativ können Anwendungen, die Metal-Inhalte über der Szene Qt Quick rendern möchten, dies tun, indem sie sich mit den Signalen QQuickWindow::afterRendering() und QQuickWindow::afterRenderPassRecording() verbinden.
In diesem Beispiel werden wir auch sehen, wie es möglich ist, Werte zu haben, die QML ausgesetzt sind und das Rendering von Metal beeinflussen. Wir animieren den Schwellenwert mit NumberAnimation in der QML-Datei und dieser Wert wird vom Metal-Shader-Programm verwendet, das die Eichhörnchen zeichnet.
Das Beispiel ist in den meisten Punkten äquivalent zu den Beispielen "OpenGL unter QML", " Direct3D 11 unter QML" und "Vulkan unter QML". Sie alle rendern denselben benutzerdefinierten Inhalt, nur über unterschiedliche native APIs.
© 2025 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.