QQuickFramebufferObject Class
La classe QQuickFramebufferObject est une classe de commodité permettant d'intégrer le rendu OpenGL à l'aide d'un objet framebuffer (FBO) sur Qt Quick. Plus...
| En-tête : | #include <QQuickFramebufferObject> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Quick)target_link_libraries(mytarget PRIVATE Qt6::Quick) |
| qmake : | QT += quick |
| Héritages : | 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 n'est fonctionnelle que lorsque Qt Quick effectue un rendu via OpenGL. Elle n'est pas compatible avec d'autres API graphiques, telles que Vulkan ou Metal. Elle doit être traitée comme une classe héritée qui n'est présente que pour permettre aux applications Qt 5 de fonctionner sans rupture de compatibilité avec les sources tant qu'elles se lient à OpenGL.
Sur la plupart des plateformes, le rendu se fera sur un thread dédié. C'est pourquoi la classe QQuickFramebufferObject impose une séparation stricte entre l'implémentation de l'élément 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 nécessaires à QML, doit se trouver dans une sous-classe de la classe QQuickFramebufferObject. Tout ce qui concerne le rendu doit se trouver dans la classe QQuickFramebufferObject::Renderer.
Pour éviter les conditions de course et les problèmes de lecture/écriture à partir de 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 se faire principalement par l'intermédiaire de la fonction QQuickFramebufferObject::Renderer::synchronize(). Cette fonction sera appelée sur le thread de rendu pendant que le thread de l'interface graphique est bloqué.
Il est également possible d'utiliser des connexions ou des événements en file d'attente pour la communication entre l'élément et le moteur de rendu.
Le moteur de rendu et le FBO sont gérés en interne.
Pour effectuer un rendu dans le FBO, l'utilisateur doit sous-classer la classe Renderer et réimplémenter sa fonction Renderer::render(). La sous-classe Renderer est renvoyée par la fonction createRenderer().
La taille du FBO s'adapte par défaut à la taille de l'élément. Si vous préférez une taille fixe, définissez textureFollowsItemSize comme false et renvoyez une texture de votre choix à partir de QQuickFramebufferObject::Renderer::createFramebufferObject().
À partir de Qt 5.4, la classe QQuickFramebufferObject est une texture provider et peut être utilisée directement dans ShaderEffects et d'autres classes qui consomment des fournisseurs de texture.
Voir également Scene Graph et Rendering.
Documentation sur les propriétés
mirrorVertically : bool
Cette propriété détermine si la taille du contenu de l'OBF doit être reflétée verticalement lors du dessin. Cela permet d'intégrer facilement le code de rendu d'une tierce partie qui ne suit pas les attentes standard.
La valeur par défaut est false.
Fonctions d'accès :
| bool | mirrorVertically() const |
| void | setMirrorVertically(bool enable) |
Signal Notificateur :
| void | mirrorVerticallyChanged(bool) |
textureFollowsItemSize : bool
Cette propriété permet de contrôler si la taille de la texture du FBO doit suivre les dimensions de l'élément QQuickFramebufferObject. Si la valeur de cette propriété est "false", le FBO sera créé une fois lors de son premier affichage. Si cette propriété vaut true, le FBO sera recréé à chaque fois que les dimensions de l'élément changeront.
La valeur par défaut est true.
Fonctions d'accès :
| bool | textureFollowsItemSize() const |
| void | setTextureFollowsItemSize(bool follows) |
Signal Notificateur :
| void | textureFollowsItemSizeChanged(bool) |
Member Function Documentation
QQuickFramebufferObject::QQuickFramebufferObject(QQuickItem *parent = nullptr)
Construit un nouvel objet QQuickFramebufferObject avec le parent parent.
[pure virtual] QQuickFramebufferObject::Renderer *QQuickFramebufferObject::createRenderer() const
Réimplémentez cette fonction pour créer un moteur de rendu utilisé pour effectuer le rendu dans l'interface graphique.
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.