이 페이지에서

QSGRendererInterface Class

씬그래프의 그래픽 API 관련 내부 기능 중 일부에 대한 접근을 제공하는 인터페이스입니다. 더 보기...

헤더: #include <QSGRendererInterface>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick

공개 유형

enum GraphicsApi { Unknown, Software, OpenVG, OpenGL, Direct3D11, …, Null }
enum RenderMode { RenderMode2D, RenderMode2DNoDepthBuffer, RenderMode3D }
enum Resource { DeviceResource, CommandQueueResource, CommandListResource, PainterResource, RhiResource, …, GraphicsQueueIndexResource }
enum ShaderCompilationType { RuntimeCompilation, OfflineCompilation }
flags ShaderCompilationTypes
enum ShaderSourceType { ShaderSourceString, ShaderSourceFile, ShaderByteCode }
flags ShaderSourceTypes
enum ShaderType { UnknownShadingLanguage, GLSL, HLSL, RhiShader }

공개 함수

virtual void *getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const
virtual void *getResource(QQuickWindow *window, const char *resource) const
virtual QSGRendererInterface::GraphicsApi graphicsApi() const = 0
virtual QSGRendererInterface::ShaderCompilationTypes shaderCompilationType() const = 0
virtual QSGRendererInterface::ShaderSourceTypes shaderSourceType() const = 0
virtual QSGRendererInterface::ShaderType shaderType() const = 0

정적 공용 멤버

bool isApiRhiBased(QSGRendererInterface::GraphicsApi api)

상세 설명

렌더러 인터페이스를 사용하면 씬그래프 내에서 그래픽 API 고유의 기능에 접근할 수 있습니다. 이러한 내부 기능은 일반적으로 노출되지 않습니다. 그러나 예를 들어 QSGRenderNode 를 통해 사용자 정의 렌더링을 통합할 때, 씬그래프에서 사용하는 그래픽 장치(예: Direct3D 또는 Vulkan 장치)와 같은 특정 값을 조회해야 할 필요가 생길 수 있습니다.

QSGRendererInterface의 함수들은 사용 가능 여부가 다양합니다. graphicsApi()이나 shaderType()과 같은 API 및 언어 쿼리는 항상 사용할 수 있습니다. 즉, QQuickWindow 또는 QQuickView 를 생성하기만 하면 되며, 그 직후 QQuickWindow::rendererInterface()을 통해 사용 중인 그래픽 API나 셰이딩 언어를 조회할 수 있습니다. 이를 통해 GraphicsInfo QML 유형과 같은 유틸리티는, 예를 들어 shaderType()에 의존하는 조건부 속성 값이 예상치 못한 값으로 평가되는 일 없이, 가능한 한 빨리 정확한 값을 보고할 수 있습니다.

그러나 getResource()과 같은 엔진별 액세서는 시네그래프가 초기화된 후에만 사용할 수 있습니다. 또한, 이러한 함수를 호출할 수 있는 시기에 대해 백엔드별 제한 사항이 있을 수 있습니다. 성공이 보장되는 유일한 방법은 노드의 렌더링(즉, 다음 프레임에 대한 명령 목록 준비)이 진행 중일 때 해당 함수를 호출하는 것입니다. 실제로는 대개 QSGRenderNode::render()를 의미합니다.

멤버 유형 문서

enum QSGRendererInterface::GraphicsApi

상수값설명
QSGRendererInterface::Unknown0알 수 없는 그래픽 API가 사용 중입니다
QSGRendererInterface::Software1Qt Quick 2D 렌더러가 사용 중입니다
QSGRendererInterface::OpenVG2EGL을 통한 OpenVG
QSGRendererInterface::OpenGL (since Qt 5.14)3그래픽 추상화 계층을 통한 OpenGL ES 2.0 이상.
QSGRendererInterface::Direct3D11 (since Qt 5.14)4그래픽 추상화 계층을 통한 Direct3D 11.
QSGRendererInterface::Direct3D12 (since Qt 6.6)8그래픽 추상화 계층을 통한 Direct3D 12.
QSGRendererInterface::Vulkan (since Qt 5.14)5그래픽 추상화 계층을 통한 Vulkan 1.0.
QSGRendererInterface::Metal (since Qt 5.14)6그래픽 추상화 계층을 통한 Metal.
QSGRendererInterface::Null (since Qt 5.14)7그래픽 추상화 계층을 통한 Null(출력 없음).

enum QSGRendererInterface::RenderMode

상수값설명
QSGRendererInterface::RenderMode2D0일반 2D 렌더링
QSGRendererInterface::RenderMode2DNoDepthBuffer1깊이 버퍼가 비활성화된 일반 2D 렌더링
QSGRendererInterface::RenderMode3D2씬이 3D 그래프의 일부로 렌더링됨

enum QSGRendererInterface::Resource

상수값설명
QSGRendererInterface::DeviceResource0해당 리소스는 해당되는 경우 그래픽 장치에 대한 포인터입니다. 예를 들어, VkDevice *, MTLDevice * 또는 ID3D11Device * 등이 있습니다. Vulkan의 경우 반환되는 값은 핸들 자체가 아니라 VkDevice에 대한 포인터라는 점에 유의하십시오. 이는 Vulkan 핸들이 포인터가 아닐 수 있으며, 아키텍처의 포인터 크기와 다른 크기를 사용할 수 있으므로 단순히 void * 로 형변환하거나 그 반대의 형변환을 하는 것은 잘못된 방법이기 때문입니다.
QSGRendererInterface::CommandQueueResource1리소스는 해당되는 경우, 씬그래프에서 사용하는 그래픽 명령 큐에 대한 포인터입니다. 예를 들어, VkQueue * 또는 MTLCommandQueue * 등이 있습니다. Vulkan의 경우 반환되는 값은 핸들 자체가 아니라 VkQueue에 대한 포인터라는 점에 유의하십시오.
QSGRendererInterface::CommandListResource2이 리소스는 해당되는 경우, 씬그래프가 사용하는 명령 목록 또는 버퍼에 대한 포인터입니다. 예를 들어, VkCommandBuffer * 또는 MTLCommandBuffer * 등이 있습니다. 이 객체는 유효 기간이 제한되어 있으며, 씬그래프가 다음 프레임을 준비하는 동안에만 유효합니다. Vulkan의 경우 반환되는 값은 핸들 자체가 아니라 VkCommandBuffer에 대한 포인터라는 점에 유의하십시오.
QSGRendererInterface::PainterResource3이 리소스는 소프트웨어 백엔드로 실행될 때, 씬 그래프가 사용하는 활성 QPainter 에 대한 포인터입니다.
QSGRendererInterface::RhiResource (since Qt 5.14)4해당 리소스는 해당되는 경우, 씬그래프에서 사용하는 QRhi 인스턴스에 대한 포인터입니다.
QSGRendererInterface::RhiSwapchainResource (since Qt 6.0)5이 리소스는 창과 연관된 QRhiSwapchain 인스턴스에 대한 포인터입니다. 창이 QQuickRenderControl 와 함께 사용되는 경우 값은 null입니다.
QSGRendererInterface::RhiRedirectCommandBuffer (since Qt 6.0)6이 리소스는 창 및 해당 QQuickRenderControl 과 연결된 QRhiCommandBuffer 인스턴스에 대한 포인터입니다. 창이 QQuickRenderControl 과 연결되어 있지 않은 경우 값은 null입니다.
QSGRendererInterface::RhiRedirectRenderTarget (since Qt 6.0)7이 리소스는 창 및 해당 QQuickRenderControl 와 연관된 QRhiTextureRenderTarget 인스턴스에 대한 포인터입니다. 창이 QQuickRenderControl 와 연관되어 있지 않을 경우 값은 null입니다. 이 값은 항상 메인 텍스처 렌더 타겟을 반영하며, Qt Quick 장면에 의존하지 않는다는 점에 유의하십시오. 즉, ShaderEffect 또는 QQuickItem 레이어에 의해 생성된 추가적인 텍스처 타겟팅 렌더 패스는 고려되지 않습니다.
QSGRendererInterface::PhysicalDeviceResource (since Qt 5.14)8이 리소스는 해당되는 경우, 씬그래프에서 사용하는 물리적 장치 객체에 대한 포인터입니다. 예를 들어, VkPhysicalDevice * 입니다. Vulkan의 경우 반환된 값은 핸들 자체가 아니라 VkPhysicalDevice에 대한 포인터라는 점에 유의하십시오.
QSGRendererInterface::OpenGLContextResource (since Qt 5.14)9이 리소스는 해당되는 경우, 씬그래프가(렌더 스레드에서) 사용하는 QOpenGLContext 에 대한 포인터입니다.
QSGRendererInterface::DeviceContextResource (since Qt 5.14)10이 리소스는 해당되는 경우, 씬그래프가 사용하는 디바이스 컨텍스트에 대한 포인터입니다. 예를 들어, ` ID3D11DeviceContext *`가 있습니다.
QSGRendererInterface::CommandEncoderResource (since Qt 5.14)11해당 리소스는 해당되는 경우, 씬그래프가 사용하는 현재 활성화된 렌더 명령 인코더 객체에 대한 포인터입니다. 예를 들어, ` MTLRenderCommandEncoder *`입니다. 이 객체는 유효 기간이 제한되어 있으며, 씬그래프가 다음 프레임에 대한 렌더 패스를 기록하는 동안에만 유효합니다.
QSGRendererInterface::VulkanInstanceResource (since Qt 5.14)12이 리소스는 해당되는 경우, 씬그래프가 사용하는 QVulkanInstance 에 대한 포인터입니다.
QSGRendererInterface::RenderPassResource (since Qt 5.14)13이 리소스는 씬그래프가 사용하는 메인 렌더 패스에 대한 포인터로, 색상 및 깊이/스텐실 어태치먼트와 그 사용 방법을 설명합니다. 예를 들어, VkRenderPass * 등이 있습니다. 이 값은 항상 메인 렌더 타깃(화면상의 창이나 QQuickRenderControl 가 리디렉션하는 텍스처)을 반영하며, Qt Quick 장면에 의존하지 않는다는 점에 유의하십시오. 즉, ShaderEffect 또는 QQuickItem 레이어에 의해 생성된 추가적인 텍스처 타겟팅 렌더 패스는 고려되지 않습니다.
QSGRendererInterface::RedirectPaintDevice (since Qt 6.4)14이 리소스는 창 및 해당 QQuickRenderControl 과 연관된 QPaintDevice 인스턴스에 대한 포인터입니다. 창이 QQuickRenderControl 과 연관되어 있지 않은 경우 이 값은 null입니다.
QSGRendererInterface::GraphicsQueueFamilyIndexResource (since Qt 6.6)15이 리소스는 해당되는 경우, 씬그래프가 사용하는 그래픽 큐 패밀리 인덱스에 대한 포인터입니다. Vulkan의 경우, 이는 uint32_t 인덱스 값에 대한 포인터입니다.
QSGRendererInterface::GraphicsQueueIndexResource (since Qt 6.6)16이 리소스는 해당되는 경우, 씬그래프가 사용하는 그래픽 큐 인덱스(uint32_t)에 대한 포인터입니다. Vulkan의 경우, 이는 uint32_t 인덱스 값에 대한 포인터이며, 실제로는 CommandQueueResource 에 대해 보고된 VkQueue의 인덱스입니다.

enum QSGRendererInterface::ShaderCompilationType
flags QSGRendererInterface::ShaderCompilationTypes

상수값설명
QSGRendererInterface::RuntimeCompilation0x01셰이더 소스 코드의 런타임 컴파일이 지원됩니다
QSGRendererInterface::OfflineCompilation0x02사전 컴파일된 바이트코드 지원

ShaderCompilationTypes 유형은 QFlags<ShaderCompilationType>에 대한 typedef입니다. 이 유형은 ShaderCompilationType 값들의 OR 조합을 저장합니다.

enum QSGRendererInterface::ShaderSourceType
flags QSGRendererInterface::ShaderSourceTypes

상수값설명
QSGRendererInterface::ShaderSourceString0x01셰이더 소스 코드는 다음의 해당 속성에 문자열로 지정할 수 있습니다. ShaderEffect
QSGRendererInterface::ShaderSourceFile0x02셰이더 소스 코드가 포함된 로컬 또는 리소스 파일이 지원됩니다
QSGRendererInterface::ShaderByteCode0x04셰이더 바이트코드가 포함된 로컬 또는 리소스 파일이 지원됩니다

ShaderSourceTypes 유형은 QFlags<ShaderSourceType>에 대한 typedef입니다. 이 유형은 ShaderSourceType 값들의 OR 조합을 저장합니다.

enum QSGRendererInterface::ShaderType

상수값설명
QSGRendererInterface::UnknownShadingLanguage0연관된 윈도우 및 씬그래프가 없어 아직 알 수 없음
QSGRendererInterface::GLSL1GLSL 또는 GLSL ES
QSGRendererInterface::HLSL2HLSL
QSGRendererInterface::RhiShader (since Qt 5.14)3여러 대상 언어 및 중간 형식에 대한 셰이더 변형이 포함된 ` QShader ` 인스턴스를 사용합니다.

멤버 함수 문서

[virtual] void *QSGRendererInterface::getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const

window 에 있는 그래픽 리소스 resource 를 조회합니다. 해당 리소스가 지원되지 않거나 사용할 수 없는 경우 null을 반환합니다.

성공 시, 반환되는 포인터는 인터페이스에 대한 직접 포인터이거나, 먼저 역참조해야 하는 불투명 핸들(예: VkDevice dev = *static_cast<VkDevice *>(result))에 대한 포인터입니다. 이러한 핸들은 포인터와 크기가 다를 수 있으므로 후자의 방식이 필요합니다.

참고: 반환된 포인터의소유권은 호출자에게 절대 이전되지 않습니다.

참고: 이 함수는 렌더링 스레드에서만 호출해야 합니다.

[virtual] void *QSGRendererInterface::getResource(QQuickWindow *window, const char *resource) const

그래픽 리소스에 대한 정보를 조회합니다. ` resource `는 백엔드별 키입니다. 이를 통해 `Resource` 열거형에 나열되지 않은 향후 추가될 리소스도 지원할 수 있습니다.

참고: 반환된 포인터의소유권은 호출자에게 절대 양도되지 않습니다.

참고: 이 함수는 렌더링 스레드에서만 호출해야 합니다.

[pure virtual] QSGRendererInterface::GraphicsApi QSGRendererInterface::graphicsApi() const

Qt Quick 의 씬그래프에서 사용 중인 그래픽 API를 반환합니다.

참고: 이 함수는 어떤 스레드에서나 호출할 수 있습니다.

[static] bool QSGRendererInterface::isApiRhiBased(QSGRendererInterface::GraphicsApi api)

api 가 네이티브 그래픽 API를 직접 호출하는 대신 그래픽 추상화 계층(QRhi)을 기반으로 하는 경우 true를 반환합니다.

참고: 이 함수는 어떤 스레드에서든 호출할 수 있습니다.

[pure virtual] QSGRendererInterface::ShaderCompilationTypes QSGRendererInterface::shaderCompilationType() const

애플리케이션이 사용 중인 Qt Quick 백엔드에서 지원하는 셰이더 컴파일 방식에 대한 비트 마스크를 반환합니다.

참고: 이 함수는 어떤 스레드에서든 호출할 수 있습니다.

QtQuick::GraphicsInfo도 참조하십시오 .

[pure virtual] QSGRendererInterface::ShaderSourceTypes QSGRendererInterface::shaderSourceType() const

ShaderEffect 항목에서 셰이더 소스를 제공하는 지원되는 방식에 대한 비트 마스크를 반환합니다.

참고: 이 함수는 어떤 스레드에서나 호출할 수 있습니다.

QtQuick::GraphicsInfo도 참조하십시오 .

[pure virtual] QSGRendererInterface::ShaderType QSGRendererInterface::shaderType() const

애플리케이션이 사용 중인 Qt Quick 백엔드에서 지원하는 셰이딩 언어를 반환합니다.

참고: 이 함수는 어떤 스레드에서나 호출할 수 있습니다.

참조: QtQuick::GraphicsInfo.

© 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.