QQuickFramebufferObject::Renderer Class
class QQuickFramebufferObject::RendererFonctions 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 ` sert à implémenter la logique de rendu d'une ` QQuickFramebufferObject`.
Documentation des fonctions membres
[protected] Renderer::Renderer()
Crée un nouveau moteur de rendu.
Cette fonction est appelée pendant la phase de synchronisation de l'arborescence de scène, lorsque le thread de l'interface graphique est bloqué.
[virtual noexcept protected] Renderer::~Renderer()
Le Renderer est automatiquement supprimé lorsque les ressources du graphe de scène associées à l'élément « QQuickFramebufferObject » sont libéré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 nouvel FBO est nécessaire. Cela se produit lors de l'image initiale. Si la paramètre « QQuickFramebufferObject::textureFollowsItemSize » est défini sur « true », elle est appelée à nouveau chaque fois que les dimensions de l'élément changent.
Le FBO renvoyé peut comporter n’importe quel attachement. Si l’ QOpenGLFramebufferObjectFormat indique que le FBO doit être multisampled, l’implémentation interne du Renderer allouera un deuxième FBO et copiera le FBO multisampled dans le FBO utilisé pour afficher la texture.
Remarque : certains matériels rencontrent des problèmes avec les FBO de petite taille. La méthode ` size ` en tient compte ; soyez donc prudent lorsque vous remplacez la taille par une valeur fixe. Une taille minimale de 64x64 devrait toujours fonctionner.
Remarque : la fonction ` size ` tient compte du rapport de pixels de l’appareil, ce qui signifie qu’elle est déjà multipliée par le facteur d’échelle correct. Lorsque vous déplacez la fenêtre contenant l’élément ` QQuickFramebufferObject ` vers un écran présentant des paramètres différents, le FBO est automatiquement recréé et cette fonction est appelée avec la taille correcte.
[protected] QOpenGLFramebufferObject *Renderer::framebufferObject() const
Renvoie l'objet framebuffer sur lequel le rendu est en cours.
[protected] void Renderer::invalidateFramebufferObject()
Appelez cette fonction lors de l'appel de ` synchronize()` pour invalider le FBO actuel. Cela entraînera la création d'un nouveau FBO via ` createFramebufferObject()`.
[pure virtual protected] void Renderer::render()
Cette fonction est appelée lorsque le rendu doit être effectué dans le FBO. À ce stade, le framebuffer est lié et l'glViewport e a été configurée pour correspondre à la taille du FBO.
Le FBO sera automatiquement détaché une fois que la fonction aura renvoyé une valeur.
Remarque : ne partez pas du principe que l’état OpenGL est entièrement réinitialisé aux valeurs par défaut lorsque cette fonction est appelée, ni qu’il est conservé d’un appel à l’autre. Le moteur de rendu d’ Qt Quick et le code de rendu personnalisé utilisent tous deux le même contexte OpenGL. Cela signifie que l’état a pu être modifié par Quick avant l’appel de cette fonction.
Remarque : il est recommandé d’appeler ` QQuickOpenGLUtils::resetOpenGLState()` avant de quitter la fonction. Cela réinitialise l’état OpenGL utilisé par le moteur de rendu ` Qt Quick ` et évite ainsi toute interférence due aux modifications d’état apportées par le code de rendu dans cette fonction.
[virtual protected] void Renderer::synchronize(QQuickFramebufferObject *item)
Cette fonction est appelée à la suite de l'appel de ` QQuickFramebufferObject::update()`.
Utilisez cette fonction pour mettre à jour le moteur de rendu avec les modifications survenues dans l’élément. item est l’élément qui a instancié ce moteur de rendu. La fonction est appelée une seule fois avant la création du FBO.
Par exemple, si l'élément possède une propriété de couleur contrôlée par QML, il convient d'appeler ` QQuickFramebufferObject::update()` et d'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ù le moteur de rendu et l’élément peuvent lire et écrire en toute sécurité les membres l’un de l’autre.
[protected] void Renderer::update()
Appelez cette fonction lorsque le FBO doit être rendu à nouveau.
Cette fonction peut être appelée depuis ` render()` pour forcer le rendu du FBO avant l'image suivante.
Remarque : cette fonction doit être utilisée depuis l'intérieur du moteur de rendu. Pour mettre à jour l'élément sur le thread 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.