Sur cette page

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

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

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.