QQuickFramebufferObject Class
La classe `QQuickFramebufferObject` est une classe utilitaire permettant d'intégrer le rendu OpenGL à l'aide d'un objet framebuffer (FBO) avec Qt Quick. En savoir plus...
| En-tête : | #include <QQuickFramebufferObject> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Quick) target_link_libraries(mytarget PRIVATE Qt6::Quick) |
| qmake : | QT += quick |
| Hérite de : | QQuickItem |
Types publics
| class | Renderer |
Propriétés
- mirrorVertically : bool
- textureFollowsItemSize : bool
Fonctions publiques
| QQuickFramebufferObject(QQuickItem *parent = nullptr) | |
| virtual QQuickFramebufferObject::Renderer * | createRenderer() const = 0 |
| bool | mirrorVertically() const |
| void | setMirrorVertically(bool enable) |
| void | setTextureFollowsItemSize(bool follows) |
| bool | textureFollowsItemSize() const |
Fonctions publiques réimplémentées
| virtual bool | isTextureProvider() const override |
| virtual void | releaseResources() override |
| virtual QSGTextureProvider * | textureProvider() const override |
Signaux
| void | mirrorVerticallyChanged(bool) |
| void | textureFollowsItemSizeChanged(bool) |
Description détaillée
Avertissement : cette classe ne fonctionne que lorsque Qt Quick effectue le rendu via OpenGL. Elle n’est pas compatible avec d’autres API graphiques, telles que Vulkan ou Metal. Elle doit être considérée comme une classe héritée, dont la seule raison d’être est de permettre aux applications Qt 5 de fonctionner sans rupture de compatibilité source, à condition qu’elles s’appuient sur OpenGL.
Sur la plupart des plateformes, le rendu s'effectue sur un thread dédié. C'est pourquoi la classe QQuickFramebufferObject impose une séparation stricte entre l'implémentation des éléments et le rendu FBO. Toute la logique de l’élément, telle que les propriétés et les fonctions d’aide liées à l’interface utilisateur requises par QML, doit être placée dans une sous-classe de la classe `QQuickFramebufferObject`. Tout ce qui concerne le rendu doit être placé dans la classe ` QQuickFramebufferObject::Renderer `.
Pour éviter les conditions de concurrence et les problèmes de lecture/écriture entre deux threads, il est important que le moteur de rendu et l’élément ne lisent ni n’écrivent jamais de variables partagées. La communication entre l’élément et le moteur de rendu doit principalement s’effectuer via la fonction ` QQuickFramebufferObject::Renderer::synchronize()`. Cette fonction sera appelée sur le thread de rendu tandis que le thread de l’interface graphique est bloqué.
Il est également possible d’utiliser des connexions en file d’attente ou des événements pour la communication entre l’élément et le moteur de rendu.
Le Renderer et le FBO sont tous deux gérés en mémoire en interne.
Pour effectuer le rendu dans le FBO, l’utilisateur doit créer une sous-classe de la classe Renderer et réimplémenter sa fonction Renderer::render(). La sous-classe du Renderer est renvoyée par la fonction createRenderer().
Par défaut, la taille du FBO s’adapte à celle de l’élément. Si vous préférez une taille fixe, définissez ` textureFollowsItemSize ` sur ` false ` et renvoyez une texture de votre choix à partir de ` QQuickFramebufferObject::Renderer::createFramebufferObject()`.
À partir de Qt 5.4, la classe QQuickFramebufferObject est un « texture provider » et peut être utilisée directement dans ShaderEffects et d’autres classes qui utilisent des fournisseurs de textures.
Voir également Graphique de scène et Rendu.
Documentation des propriétés
mirrorVertically : bool
Cette propriété détermine si le contenu du FBO doit être inversé verticalement lors du dessin. Cela permet d'intégrer facilement du code de rendu tiers qui ne respecte pas les normes habituelles.
La valeur par défaut est « false ».
Fonctions d'accès :
| bool | mirrorVertically() const |
| void | setMirrorVertically(bool enable) |
Signal de notification :
| void | mirrorVerticallyChanged(bool) |
textureFollowsItemSize : bool
Cette propriété détermine si la taille de la texture du FBO doit suivre les dimensions de l'élément « QQuickFramebufferObject ». Lorsque cette propriété est définie sur « false », le FBO est créé lors de sa première affichage. Si elle est définie sur « true », le FBO est recréé à chaque fois que les dimensions de l'élément changent.
La valeur par défaut est « true ».
Fonctions d’accès :
| bool | textureFollowsItemSize() const |
| void | setTextureFollowsItemSize(bool follows) |
Signal de notification :
| void | textureFollowsItemSizeChanged(bool) |
Documentation des fonctions membres
QQuickFramebufferObject::QQuickFramebufferObject(QQuickItem *parent = nullptr)
Crée un nouvel objet `QQuickFramebufferObject` dont le parent est ` parent`.
[pure virtual] QQuickFramebufferObject::Renderer *QQuickFramebufferObject::createRenderer() const
Réimplémentez cette fonction pour créer un moteur de rendu permettant d'effectuer le rendu dans le FBO.
Cette fonction sera appelée sur le thread de rendu pendant que le thread de l'interface graphique est bloqué.
[override virtual] bool QQuickFramebufferObject::isTextureProvider() const
Réimplémente : QQuickItem::isTextureProvider() const.
[override virtual] void QQuickFramebufferObject::releaseResources()
Réimplémente : QQuickItem::releaseResources().
[override virtual] QSGTextureProvider *QQuickFramebufferObject::textureProvider() const
Réimplémente : QQuickItem::textureProvider() const.
© 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.