QSGRendererInterface Class
Une interface permettant d'accéder à certains éléments internes spécifiques de l'API graphique du graphe de scène. Plus d'informations...
| 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 aux fonctionnalités spécifiques de l'API graphique dans le graphe de scène. Ces fonctions internes ne sont généralement pas exposées. Cependant, lors de l'intégration d'un rendu personnalisé via QSGRenderNode par exemple, il peut être nécessaire d'interroger certaines valeurs, par exemple le périphérique graphique (par exemple, le périphérique Direct3D ou Vulkan) qui est utilisé par le graphe de scène.
Les fonctions de QSGRendererInterface ont une disponibilité variable. Les requêtes d'API et de langage, telles que graphicsApi() ou shaderType() sont toujours disponibles, ce qui signifie qu'il suffit de construire un QQuickWindow ou un QQuickView, et que l'API graphique ou le langage d'ombrage utilisé peut être interrogé juste après via QQuickWindow::rendererInterface(). Cela garantit que les utilitaires tels que le type QML GraphicsInfo sont en mesure de signaler les valeurs correctes dès que possible, sans que les valeurs de propriété conditionnelles - dépendant par exemple de shaderType() - ne soient évaluées à des valeurs inattendues.
Les accesseurs spécifiques au moteur, comme getResource(), ne sont toutefois disponibles qu'après l'initialisation du graphe de scène. De plus, il peut y avoir des limitations spécifiques au backend sur le moment où de telles fonctions peuvent être appelées. La seule façon de garantir le succès est de 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 actif. En pratique, cela signifie généralement QSGRenderNode::render().
Documentation sur les types de membres
enum QSGRendererInterface::GraphicsApi
| Constante | Valeur | Description de l'API |
|---|---|---|
QSGRendererInterface::Unknown | 0 | Une API graphique inconnue est utilisée |
QSGRendererInterface::Software | 1 | Le moteur de rendu 2D de Qt Quick est utilisé. |
QSGRendererInterface::OpenVG | 2 | OpenVG via EGL |
QSGRendererInterface::OpenGL (since Qt 5.14) | 3 | OpenGL ES 2.0 ou supérieur via une couche d'abstraction graphique. |
QSGRendererInterface::Direct3D11 (since Qt 5.14) | 4 | Direct3D 11 via une couche d'abstraction graphique. |
QSGRendererInterface::Direct3D12 (since Qt 6.6) | 8 | Direct3D 12 via une couche d'abstraction graphique. |
QSGRendererInterface::Vulkan (since Qt 5.14) | 5 | Vulkan 1.0 via une couche d'abstraction graphique. |
QSGRendererInterface::Metal (since Qt 5.14) | 6 | Metal via une couche d'abstraction graphique. |
QSGRendererInterface::Null (since Qt 5.14) | 7 | Null (pas de sortie) via une couche d'abstraction graphique. |
enum QSGRendererInterface::RenderMode
| Constante | Valeur | Description |
|---|---|---|
QSGRendererInterface::RenderMode2D | 0 | Rendu 2D normal |
QSGRendererInterface::RenderMode2DNoDepthBuffer | 1 | Rendu 2D normal avec tampon de profondeur désactivé |
QSGRendererInterface::RenderMode3D | 2 | La scène est rendue en tant que partie d'un graphique 3D |
enum QSGRendererInterface::Resource
| Constante | Valeur | Description de la ressource |
|---|---|---|
QSGRendererInterface::DeviceResource | 0 | La ressource est un pointeur sur 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 handle lui-même. En effet, les handles Vulkan peuvent ne pas être des pointeurs et peuvent utiliser une taille différente de celle des pointeurs de l'architecture, de sorte qu'un simple casting vers/depuis void * est erroné. |
QSGRendererInterface::CommandQueueResource | 1 | La ressource est un pointeur sur la file d'attente des commandes graphiques utilisée par le scenegraph, le cas échéant. Par exemple, un VkQueue * ou MTLCommandQueue *. Notez qu'avec Vulkan, la valeur renvoyée est un pointeur vers la VkQueue, et non le handle lui-même. |
QSGRendererInterface::CommandListResource | 2 | La ressource est un pointeur sur 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 valable que lorsque 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 la poignée elle-même. |
QSGRendererInterface::PainterResource | 3 | La ressource est un pointeur sur le site QPainter actif utilisé par le graphe de scène, lorsqu'il est exécuté avec le backend logiciel. |
QSGRendererInterface::RhiResource (since Qt 5.14) | 4 | La ressource est un pointeur sur l'instance QRhi utilisée par le scenegraph, le cas échéant. |
QSGRendererInterface::RhiSwapchainResource (since Qt 6.0) | 5 | La ressource est un pointeur sur une instance de 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) | 6 | La ressource est un pointeur sur 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 instance QQuickRenderControl. |
QSGRendererInterface::RhiRedirectRenderTarget (since Qt 6.0) | 7 | La ressource est un pointeur sur une instance QRhiTextureRenderTarget associée à la fenêtre et à son QQuickRenderControl. La valeur est nulle si 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 ne dépend pas de la scène Qt Quick, ce qui signifie qu'elle ne prend pas en compte les passes de rendu de texture supplémentaires générées par les couches ShaderEffect ou QQuickItem. |
QSGRendererInterface::PhysicalDeviceResource (since Qt 5.14) | 8 | La ressource est un pointeur sur 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 handle lui-même. |
QSGRendererInterface::OpenGLContextResource (since Qt 5.14) | 9 | La ressource est un pointeur sur le site QOpenGLContext utilisé par la scène (sur le thread de rendu), le cas échéant. |
QSGRendererInterface::DeviceContextResource (since Qt 5.14) | 10 | La ressource est un pointeur sur le contexte du périphérique utilisé par la scène, le cas échéant. Par exemple, un ID3D11DeviceContext *. |
QSGRendererInterface::CommandEncoderResource (since Qt 5.14) | 11 | La ressource est un pointeur sur l'objet d'encodage de commande de rendu actuellement actif utilisé par le graphe de scène, le cas échéant. Par exemple, MTLRenderCommandEncoder *. Cet objet a une validité limitée et n'est valable que lorsque le graphe de scène enregistre une passe de rendu pour l'image suivante. |
QSGRendererInterface::VulkanInstanceResource (since Qt 5.14) | 12 | La ressource est un pointeur vers le site QVulkanInstance utilisé par le graphe de scène, le cas échéant. |
QSGRendererInterface::RenderPassResource (since Qt 5.14) | 13 | La ressource est un pointeur vers la passe de rendu principale utilisée par le graphe de scène, décrivant les attachements de couleur et de profondeur/stecil et la manière dont ils sont utilisés. 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 Qt Quick, ce qui signifie qu'elle ne prend pas en compte les passes de rendu supplémentaires ciblant les textures générées par les couches ShaderEffect ou QQuickItem. |
QSGRendererInterface::RedirectPaintDevice (since Qt 6.4) | 14 | La ressource est un pointeur sur l'instance QPaintDevice associée à la fenêtre et à son QQuickRenderControl. La valeur est nulle lorsque la fenêtre n'est pas associée à une QQuickRenderControl. |
QSGRendererInterface::GraphicsQueueFamilyIndexResource (since Qt 6.6) | 15 | La ressource est un pointeur sur l'index de la famille de la file d'attente graphique utilisée par le scenegraph, le cas échéant. Avec Vulkan, il s'agit d'un pointeur sur une valeur d'index uint32_t. |
QSGRendererInterface::GraphicsQueueIndexResource (since Qt 6.6) | 16 | La ressource est un pointeur sur 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 sur une valeur d'index uint32_t qui, en pratique, est l'index de la VkQueue signalée pour CommandQueueResource. |
enum QSGRendererInterface::ShaderCompilationType
flags QSGRendererInterface::ShaderCompilationTypes
| Constante | Valeur | Description du type de compilation |
|---|---|---|
QSGRendererInterface::RuntimeCompilation | 0x01 | La compilation du code source des shaders au moment de l'exécution est prise en charge. |
QSGRendererInterface::OfflineCompilation | 0x02 | Le bytecode précompilé est pris en charge |
Le type ShaderCompilationTypes est un typedef pour QFlags<ShaderCompilationType>. Il stocke une combinaison OR de valeurs ShaderCompilationType.
enum QSGRendererInterface::ShaderSourceType
flags QSGRendererInterface::ShaderSourceTypes
| Constante | Valeur | Description |
|---|---|---|
QSGRendererInterface::ShaderSourceString | 0x01 | La source du shader peut être fournie sous la forme d'une chaîne de caractères dans les propriétés correspondantes de ShaderEffect |
QSGRendererInterface::ShaderSourceFile | 0x02 | Les fichiers locaux ou de ressources contenant le code source des shaders sont pris en charge. |
QSGRendererInterface::ShaderByteCode | 0x04 | Les 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 OU de valeurs de type ShaderSourceType.
enum QSGRendererInterface::ShaderType
| Constante | Valeur | Description |
|---|---|---|
QSGRendererInterface::UnknownShadingLanguage | 0 | Pas encore connu en raison de l'absence de fenêtre et de graphe de scène associés |
QSGRendererInterface::GLSL | 1 | GLSL ou GLSL ES |
QSGRendererInterface::HLSL | 2 | HLSL |
QSGRendererInterface::RhiShader (since Qt 5.14) | 3 | Consomme les instances de QShader contenant des variantes de shaders pour plusieurs langues 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 si la ressource en question n'est pas prise en charge ou n'est pas disponible.
En cas de succès, le pointeur retourné est soit un pointeur direct sur une interface, soit un pointeur sur un handle opaque qui doit être déréférencé en premier (par exemple, VkDevice dev = *static_cast<VkDevice *>(result)). Ce dernier cas est nécessaire car ces handles peuvent avoir des tailles différentes de celles d'un pointeur.
Remarque : la propriété du pointeur retourné 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 toutes les ressources futures qui ne sont pas répertoriées dans l'énumération des ressources.
Remarque : la propriété du pointeur retourné 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 Qt Quick.
Remarque : cette fonction peut être appelée sur n'importe quel thread.
[static] bool QSGRendererInterface::isApiRhiBased(QSGRendererInterface::GraphicsApi api)
Retourne true si api est basé sur une couche d'abstraction graphique (QRhi) au lieu d'appeler directement l'API graphique native.
Remarque : cette fonction peut être appelée sur n'importe quel thread.
[pure virtual] QSGRendererInterface::ShaderCompilationTypes QSGRendererInterface::shaderCompilationType() const
Renvoie un masque de bits des approches de compilation des shaders prises en charge par le backend Qt Quick utilisé par l'application.
Remarque : cette fonction peut être appelée sur n'importe quel thread.
Voir également QtQuick::GraphicsInfo.
[pure virtual] QSGRendererInterface::ShaderSourceTypes QSGRendererInterface::shaderSourceType() const
Renvoie un masque de bits des méthodes prises en charge pour fournir des sources de shaders dans les éléments ShaderEffect.
Remarque : cette fonction peut être appelée sur n'importe quel thread.
Voir également QtQuick::GraphicsInfo.
[pure virtual] QSGRendererInterface::ShaderType QSGRendererInterface::shaderType() const
Renvoie le langage d'ombrage pris en charge par le backend Qt Quick utilisé par l'application.
Remarque : cette fonction peut être appelée sur n'importe quel thread.
Voir également 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.