Sur cette page

QQuickFramebufferObject::Renderer Class

class QQuickFramebufferObject::Renderer

Fonctions protégées

Renderer()
virtual ~Renderer()
virtual QOpenGLFramebufferObject *createFramebufferObject(const QSize &size)
QOpenGLFramebufferObject *framebufferObject() const
void invalidateFramebufferObject()
virtual void render() = 0
virtual void synchronize(QQuickFramebufferObject *item)
void update()

Description détaillée

La classe QQuickFramebufferObject::Renderer est utilisée pour mettre en œuvre la logique de rendu d'un site QQuickFramebufferObject.

Documentation des fonctions membres

[protected] Renderer::Renderer()

Construit un nouveau moteur de rendu.

Cette fonction est appelée pendant la phase de synchronisation du graphe de scène lorsque le fil d'exécution de l'interface graphique est bloqué.

[virtual noexcept protected] Renderer::~Renderer()

Le moteur de rendu est automatiquement supprimé lorsque les ressources du graphe de scène pour l'élément QQuickFramebufferObject sont nettoyées.

Cette fonction est appelée sur le thread de rendu.

[virtual protected] QOpenGLFramebufferObject *Renderer::createFramebufferObject(const QSize &size)

Cette fonction est appelée lorsqu'un nouveau FBO est nécessaire. Cela se produit lors de la première image. Si QQuickFramebufferObject::textureFollowsItemSize a la valeur true, elle est appelée à nouveau chaque fois que les dimensions de l'objet changent.

Le FBO renvoyé peut avoir n'importe quelle attache. Si QOpenGLFramebufferObjectFormat indique que le FBO doit être multi-échantillonné, l'implémentation interne du moteur de rendu allouera un second FBO et intégrera le FBO multi-échantillonné dans le FBO utilisé pour afficher la texture.

Note : Certains matériels ont des problèmes avec les petites tailles de FBO. size en tient compte, donc soyez prudent lorsque vous remplacez la taille par une taille fixe. Une taille minimale de 64x64 devrait toujours fonctionner.

Remarque : size tient compte du rapport entre les pixels de l'appareil, ce qui signifie qu'il est déjà multiplié par le facteur d'échelle correct. Lorsque l'on déplace la fenêtre contenant l'élément QQuickFramebufferObject vers un écran dont les paramètres sont différents, le FBO est automatiquement recréé et cette fonction est invoquée avec la taille correcte.

[protected] QOpenGLFramebufferObject *Renderer::framebufferObject() const

Renvoie l'objet framebuffer en cours de rendu.

[protected] void Renderer::invalidateFramebufferObject()

Appeler cette fonction pendant synchronize() pour invalider le FBO actuel. Un nouveau FBO sera alors créé avec createFramebufferObject().

[pure virtual protected] void Renderer::render()

Cette fonction est appelée lorsque le FBO doit être rendu. Le framebuffer est lié à ce stade et le site glViewport a été configuré pour correspondre à la taille du FBO.

Le FBO sera automatiquement délié après le retour de la fonction.

Note : Ne supposez pas que l'état d'OpenGL est défini par défaut lorsque cette fonction est invoquée, ou qu'il est maintenu entre les appels. Le moteur de rendu Qt Quick et le code de rendu personnalisé utilisent le même contexte OpenGL. Cela signifie que l'état peut avoir été modifié par Quick avant d'invoquer cette fonction.

Note : Il est recommandé d'appeler QQuickOpenGLUtils::resetOpenGLState() avant de retourner. Cela réinitialise l'état OpenGL utilisé par le moteur de rendu Qt Quick et évite ainsi toute interférence avec les changements d'état effectués par le code de rendu dans cette fonction.

[virtual protected] void Renderer::synchronize(QQuickFramebufferObject *item)

Cette fonction est appelée à la suite de QQuickFramebufferObject::update().

Utilisez cette fonction pour mettre à jour le moteur de rendu en fonction des changements survenus dans l'élément. item est l'élément qui a instancié ce moteur de rendu. La fonction est appelée une fois avant que le FBO ne soit créé.

Par exemple, si l'élément a une propriété de couleur qui est contrôlée par QML, il faut appeler QQuickFramebufferObject::update() et utiliser synchronize() pour copier la nouvelle couleur dans le moteur de rendu afin qu'elle puisse être utilisée pour le rendu de l'image suivante.

Cette fonction est le seul endroit où il est possible pour le moteur de rendu et l'élément de lire et d'écrire les membres de l'un et de l'autre.

[protected] void Renderer::update()

Appeler cette fonction lorsque l'OBF doit être rendu à nouveau.

Cette fonction peut être appelée à partir de render() pour forcer le rendu de l'OBF avant la prochaine image.

Remarque : cette fonction doit être utilisée à l'intérieur du moteur de rendu. Pour mettre à jour l'élément dans le fil d'exécution de l'interface graphique, utilisez QQuickFramebufferObject::update().

© 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.