Sur cette page

QSGRendererInterface Class

Une interface permettant d'accéder à certains mécanismes internes du graphe de scène spécifiques à l'API graphique. En savoir plus...

En-tête : #include <QSGRendererInterface>
CMake : find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake : QT += quick

Types publics

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 }

Fonctions publiques

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

Membres publics statiques

bool isApiRhiBased(QSGRendererInterface::GraphicsApi api)

Description détaillée

Les interfaces de rendu permettent d’accéder à des fonctionnalités spécifiques à l’API graphique dans le graphe de scène. Ces éléments internes ne sont généralement pas exposés. Cependant, lors de l’intégration d’un rendu personnalisé via QSGRenderNode par exemple, il peut s’avérer nécessaire d’interroger certaines valeurs, notamment le périphérique graphique (par exemple, le périphérique Direct3D ou Vulkan) utilisé par le graphe de scène.

La disponibilité des fonctions de `QSGRendererInterface` varie. Les requêtes relatives à l’API et au langage, telles que ` graphicsApi()` ou ` shaderType()`, sont toujours disponibles. Il suffit donc de créer un ` QQuickWindow ` ou un ` QQuickView` pour pouvoir interroger immédiatement l’API graphique ou le langage de shading utilisé via ` QQuickWindow::rendererInterface()`. Cela garantit que des utilitaires tels que le type QML ` GraphicsInfo ` sont capables de renvoyer les valeurs correctes le plus tôt possible, sans que des propriétés conditionnelles — dépendant par exemple de ` shaderType()` — ne soient évaluées à des valeurs inattendues.

Les accesseurs spécifiques au moteur, tels que getResource(), ne sont toutefois disponibles qu’après l’initialisation du graphe de scène. De plus, il peut exister des limitations spécifiques au backend concernant le moment où ces fonctions peuvent être appelées. La seule méthode garantissant le succès consiste à les appeler lorsque le rendu d’un nœud (c’est-à-dire la préparation de la liste de commandes pour l’image suivante) est en cours. En pratique, cela correspond généralement à ` QSGRenderNode::render()`.

Documentation sur les types de membres

enum QSGRendererInterface::GraphicsApi

ConstanteValeurDescription
QSGRendererInterface::Unknown0Une API graphique inconnue est utilisée
QSGRendererInterface::Software1Le moteur de rendu 2D « Qt Quick » est utilisé
QSGRendererInterface::OpenVG2OpenVG via EGL
QSGRendererInterface::OpenGL (since Qt 5.14)3OpenGL ES 2.0 ou version supérieure via une couche d'abstraction graphique.
QSGRendererInterface::Direct3D11 (since Qt 5.14)4Direct3D 11 via une couche d’abstraction graphique.
QSGRendererInterface::Direct3D12 (since Qt 6.6)8Direct3D 12 via une couche d'abstraction graphique.
QSGRendererInterface::Vulkan (since Qt 5.14)5Vulkan 1.0 via une couche d'abstraction graphique.
QSGRendererInterface::Metal (since Qt 5.14)6Metal via une couche d'abstraction graphique.
QSGRendererInterface::Null (since Qt 5.14)7Null (aucune sortie) via une couche d’abstraction graphique.

enum QSGRendererInterface::RenderMode

ConstanteValeurDescription
QSGRendererInterface::RenderMode2D0Rendu 2D normal
QSGRendererInterface::RenderMode2DNoDepthBuffer1Rendu 2D normal avec le tampon de profondeur désactivé
QSGRendererInterface::RenderMode3D2La scène est rendue dans le cadre d'un graphe 3D

enum QSGRendererInterface::Resource

ConstanteValeurDescription
QSGRendererInterface::DeviceResource0La ressource est un pointeur vers le périphérique graphique, le cas échéant. Par exemple, un VkDevice *, MTLDevice * ou ID3D11Device *. Notez qu’avec Vulkan, la valeur renvoyée est un pointeur vers le VkDevice, et non le descripteur lui-même. En effet, les descripteurs Vulkan ne sont pas nécessairement des pointeurs et peuvent avoir une taille différente de celle des pointeurs de l’architecture ; par conséquent, un simple transtypage vers ou depuis un void * est incorrect.
QSGRendererInterface::CommandQueueResource1La ressource est un pointeur vers la file d’attente de commandes graphiques utilisée par le graphe de scène, le cas échéant. Par exemple, un ` VkQueue * ` ou un ` MTLCommandQueue *`. Notez qu’avec Vulkan, la valeur renvoyée est un pointeur vers le `VkQueue`, et non le descripteur lui-même.
QSGRendererInterface::CommandListResource2La ressource est un pointeur vers la liste de commandes ou le tampon utilisé par le graphe de scène, le cas échéant. Par exemple, un ` VkCommandBuffer * ` ou un ` MTLCommandBuffer *`. Cet objet a une validité limitée et n’est valide que pendant que le graphe de scène prépare l’image suivante. Notez qu’avec Vulkan, la valeur renvoyée est un pointeur vers le `VkCommandBuffer`, et non le descripteur lui-même.
QSGRendererInterface::PainterResource3La ressource est un pointeur vers l’ QPainter actif utilisé par le graphe de scène, lorsqu’il s’exécute avec le backend logiciel.
QSGRendererInterface::RhiResource (since Qt 5.14)4La ressource est un pointeur vers l’instance d’ QRhi utilisée par le graphe de scène, le cas échéant.
QSGRendererInterface::RhiSwapchainResource (since Qt 6.0)5La ressource est un pointeur vers une instance QRhiSwapchain associée à la fenêtre. La valeur est nulle lorsque la fenêtre est utilisée en combinaison avec QQuickRenderControl.
QSGRendererInterface::RhiRedirectCommandBuffer (since Qt 6.0)6La ressource est un pointeur vers une instance ` QRhiCommandBuffer ` associée à la fenêtre et à son ` QQuickRenderControl`. La valeur est nulle lorsque la fenêtre n'est pas associée à une ` QQuickRenderControl`.
QSGRendererInterface::RhiRedirectRenderTarget (since Qt 6.0)7La ressource est un pointeur vers une instance de ` QRhiTextureRenderTarget ` associée à la fenêtre et à son ` QQuickRenderControl`. La valeur est nulle lorsque la fenêtre n’est pas associée à un ` QQuickRenderControl`. Notez que la valeur reflète toujours la cible de rendu de texture principale et qu’elle ne dépend pas de la scène ` Qt Quick `, ce qui signifie qu’elle ne prend pas en compte les passes de rendu supplémentaires ciblant des textures générées par les couches ` ShaderEffect ` ou ` QQuickItem `.
QSGRendererInterface::PhysicalDeviceResource (since Qt 5.14)8La ressource est un pointeur vers l'objet de périphérique physique utilisé par le graphe de scène, le cas échéant. Par exemple, un VkPhysicalDevice *. Notez qu’avec Vulkan, la valeur renvoyée est un pointeur vers le VkPhysicalDevice, et non le descripteur lui-même.
QSGRendererInterface::OpenGLContextResource (since Qt 5.14)9La ressource est un pointeur vers l'QOpenGLContext utilisé par le graphisme de scène (sur le thread de rendu), le cas échéant.
QSGRendererInterface::DeviceContextResource (since Qt 5.14)10La ressource est un pointeur vers le contexte de périphérique utilisé par le graphe de scène, le cas échéant. Par exemple, un ` ID3D11DeviceContext *`.
QSGRendererInterface::CommandEncoderResource (since Qt 5.14)11La ressource est un pointeur vers l’objet encodeur de commandes de rendu actuellement actif utilisé par le graphe de scène, le cas échéant. Par exemple, un ` MTLRenderCommandEncoder *`. Cet objet a une validité limitée et n’est valide que pendant que le graphe de scène enregistre un passage de rendu pour l’image suivante.
QSGRendererInterface::VulkanInstanceResource (since Qt 5.14)12La ressource est un pointeur vers l’ QVulkanInstance utilisé par le graphe de scène, le cas échéant.
QSGRendererInterface::RenderPassResource (since Qt 5.14)13La ressource est un pointeur vers le passage de rendu principal utilisé par le graphe de scène, décrivant les attaches de couleur et de profondeur/stencil ainsi que leur mode d’utilisation. Par exemple, un ` VkRenderPass *`. Notez que la valeur reflète toujours la cible de rendu principale (soit la fenêtre à l’écran, soit la texture vers laquelle ` QQuickRenderControl ` redirige) et qu’elle ne dépend pas de la scène d’ Qt Quick, ce qui signifie qu’elle ne prend pas en compte les passes de rendu supplémentaires ciblant des textures générées par les couches ` ShaderEffect ` ou ` QQuickItem `.
QSGRendererInterface::RedirectPaintDevice (since Qt 6.4)14La ressource est un pointeur vers une instance de ` QPaintDevice ` associée à la fenêtre et à son ` QQuickRenderControl`. La valeur est nulle lorsque la fenêtre n’est pas associée à un ` QQuickRenderControl`.
QSGRendererInterface::GraphicsQueueFamilyIndexResource (since Qt 6.6)15La ressource est un pointeur vers l’index de la famille de files d’attente graphiques utilisée par le graphe de scène, le cas échéant. Avec Vulkan, il s’agit d’un pointeur vers une valeur d’index de type ` uint32_t `.
QSGRendererInterface::GraphicsQueueIndexResource (since Qt 6.6)16La ressource est un pointeur vers l’index de la file d’attente graphique (uint32_t) utilisé par le graphe de scène, le cas échéant. Avec Vulkan, il s’agit d’un pointeur vers une valeur d’index uint32_t, qui correspond en pratique à l’index de la VkQueue signalé pour CommandQueueResource.

enum QSGRendererInterface::ShaderCompilationType
flags QSGRendererInterface::ShaderCompilationTypes

ConstanteValeurDescription
QSGRendererInterface::RuntimeCompilation0x01La compilation à l’exécution du code source du shader est prise en charge
QSGRendererInterface::OfflineCompilation0x02Prise en charge du bytecode précompilé

Le type ShaderCompilationTypes est un typedef pour QFlags<ShaderCompilationType>. Il stocke une combinaison OR de valeurs ShaderCompilationType.

enum QSGRendererInterface::ShaderSourceType
flags QSGRendererInterface::ShaderSourceTypes

ConstanteValeurDescription
QSGRendererInterface::ShaderSourceString0x01Le code source du shader peut être fourni sous forme de chaîne de caractères dans les propriétés correspondantes des ShaderEffect
QSGRendererInterface::ShaderSourceFile0x02Les fichiers locaux ou de ressources contenant du code source de shader sont pris en charge
QSGRendererInterface::ShaderByteCode0x04Les fichiers locaux ou de ressources contenant du bytecode de shader sont pris en charge

Le type ShaderSourceTypes est un typedef pour QFlags<ShaderSourceType>. Il stocke une combinaison OR de valeurs ShaderSourceType.

enum QSGRendererInterface::ShaderType

ConstanteValeurDescription
QSGRendererInterface::UnknownShadingLanguage0Inconnue pour l'instant, car aucune fenêtre ni aucun graphe de scène n'est associé
QSGRendererInterface::GLSL1GLSL ou GLSL ES
QSGRendererInterface::HLSL2HLSL
QSGRendererInterface::RhiShader (since Qt 5.14)3Utilise des instances d'QShader contenant des variantes de shader pour plusieurs langages cibles et formats intermédiaires.

Documentation des fonctions membres

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

Interroge une ressource graphique ( resource ) dans window. Renvoie null lorsque la ressource en question n'est pas prise en charge ou n'est pas disponible.

En cas de succès, le pointeur renvoyé est soit un pointeur direct vers une interface, soit un pointeur vers un descripteur opaque qui doit d’abord être déréférencé (par exemple, VkDevice dev = *static_cast<VkDevice *>(result)). Cette dernière étape est nécessaire car la taille de ces descripteurs peut différer de celle d’un pointeur.

Remarque : la propriété du pointeur renvoyé n’est jamais transférée à l’appelant.

Remarque : cette fonction ne doit être appelée que sur le thread de rendu.

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

Interroge une ressource graphique. « resource » est une clé spécifique au backend. Cela permet de prendre en charge toute ressource future qui ne figurerait pas dans l'énumération Resource.

Remarque : la propriété du pointeur renvoyé n’est jamais transférée à l’appelant.

Remarque : cette fonction ne doit être appelée que sur le thread de rendu.

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

Renvoie l’API graphique utilisée par le graphe de scène de l’ Qt Quick.

Remarque : cette fonction peut être appelée depuis n'importe quel thread.

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

Renvoie « true » si la fonction « api » s'appuie sur une couche d'abstraction graphique (QRhi) au lieu d'appeler directement l'API graphique native.

Remarque : cette fonction peut être appelée depuis n'importe quel thread.

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

Renvoie un masque de bits indiquant les méthodes de compilation de shaders prises en charge par le backend « Qt Quick » utilisé par l'application.

Remarque : cette fonction peut être appelée depuis n'importe quel thread.

Voir aussi QtQuick::GraphicsInfo.

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

Renvoie un masque de bits représentant les méthodes prises en charge pour fournir les sources de shaders dans les éléments « ShaderEffect ».

Remarque : cette fonction peut être appelée depuis n'importe quel thread.

Voir aussi QtQuick::GraphicsInfo.

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

Renvoie le langage de shading pris en charge par le backend « Qt Quick » utilisé par l'application.

Remarque : cette fonction peut être appelée depuis n'importe quel thread.

Voir aussi 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.