씬 그래프 - QML 환경에서의 Metal
Qt Quick 장면에서 Metal을 사용하여 직접 렌더링하는 방법을 보여줍니다.
Qt Quick 씬에서 Metal을 사용하여 렌더링된 애니메이션 스퀴클에 텍스트 오버레이 적용" src="images/metalunderqml-example.jpg" title="Qt Quick 씬에서 Metal을 사용하여 렌더링된 애니메이션 스퀴클에 텍스트 오버레이 적용"/>
'QML 환경에서의 Metal' 예제는 애플리케이션이 QQuickWindow::beforeRendering() 및 QQuickWindow::beforeRenderPassRecording() 신호를 활용하여 Qt Quick 장면 내에서 사용자 정의 Metal 콘텐츠를 그리는 방법을 보여줍니다. 이 신호는 매 프레임 시작 시, 즉 장면 그래프가 렌더링을 시작하기 전에 발산되므로, 이 신호에 대한 응답으로 수행되는 모든 Metal 드로우 호출은 Qt Quick 항목 아래에 중첩됩니다. 신호가 두 가지인 이유는 사용자 정의 Metal 명령이 씬 그래프에서 사용하는 것과 동일한 렌더링 명령 인코더를 통해 동일한 명령 버퍼에 기록되기 때문입니다. beforeRendering()만으로는 이 작업을 수행하기에 충분하지 않습니다. 이 신호는 프레임 시작 시, MTLRenderCommandEncoder가 사용 가능하기 전에 발생하기 때문입니다. beforeRenderPassRecording()에도 연결함으로써, 애플리케이션은 필요한 네이티브 객체에 접근할 수 있습니다.
대안으로, Qt Quick 씬 위에 Metal 콘텐츠를 렌더링하고자 하는 애플리케이션은 QQuickWindow::afterRendering() 및 QQuickWindow::afterRenderPassRecording() 시그널에 연결하여 이를 수행할 수 있습니다.
이 예제에서는 QML에 노출된 값이 Metal 렌더링에 영향을 미치는 방법도 살펴보겠습니다. QML 파일에서 NumberAnimation 을 사용하여 임계값을 애니메이션 처리하며, 이 값은 스퀴클을 그리는 Metal 셰이더 프로그램에서 사용됩니다.
이 예제는 대부분의 측면에서 ‘QML 기반 OpenGL’, ‘QML 기반 Direct3D 11’, ‘QML 기반 Vulkan’ 예제와 동일하며, 모두 서로 다른 네이티브 API를 통해 동일한 사용자 정의 콘텐츠를 렌더링합니다.
© 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.