Gráfico de escena - Metal bajo QML
Muestra cómo renderizar directamente con Metal bajo una escena Qt Quick.

El ejemplo Metal bajo QML muestra cómo una aplicación puede hacer uso de las señales QQuickWindow::beforeRendering() y QQuickWindow::beforeRenderPassRecording() para dibujar contenido Metal personalizado bajo una escena Qt Quick. Esta señal se emite al inicio de cada fotograma, antes de que el gráfico de la escena comience su renderización, por lo que cualquier llamada a dibujar Metal que se realice como respuesta a esta señal, se apilará bajo los elementos de Qt Quick. Hay dos señales, porque los comandos personalizados de Metal se graban en el mismo búfer de comandos con el mismo codificador de comandos de renderizado que utiliza el gráfico de escena. beforeRendering() por sí sola no es suficiente para esto porque se emite al inicio del fotograma, antes de tener un MTLRenderCommandEncoder disponible. Conectándose también a beforeRenderPassRecording(), la aplicación puede acceder a los objetos nativos necesarios.
Como alternativa, las aplicaciones que deseen renderizar contenido Metal sobre la escena Qt Quick, pueden hacerlo conectándose a las señales QQuickWindow::afterRendering() y QQuickWindow::afterRenderPassRecording().
En este ejemplo, también veremos cómo es posible tener valores expuestos a QML que afecten al renderizado de Metal. Animamos el valor umbral utilizando un NumberAnimation en el archivo QML y este valor es utilizado por el programa Metal shader que dibuja las ardillas.
El ejemplo es equivalente en la mayoría de los aspectos a los ejemplos OpenGL Under QML, Direct3D 11 Under QML, y Vulkan Under QML, todos ellos renderizan el mismo contenido personalizado, sólo que a través de diferentes APIs nativas.
© 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.