QQuickFramebufferObject Class
La clase QQuickFramebufferObject es una clase de conveniencia para integrar el renderizado OpenGL usando un objeto framebuffer (FBO) con Qt Quick. Más...
| Cabecera: | #include <QQuickFramebufferObject> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Quick)target_link_libraries(mytarget PRIVATE Qt6::Quick) |
| qmake: | QT += quick |
| Hereda: | QQuickItem |
Tipos públicos
| class | Renderer |
Propiedades
- mirrorVertically : bool
- textureFollowsItemSize : bool
Funciones públicas
| QQuickFramebufferObject(QQuickItem *parent = nullptr) | |
| virtual QQuickFramebufferObject::Renderer * | createRenderer() const = 0 |
| bool | mirrorVertically() const |
| void | setMirrorVertically(bool enable) |
| void | setTextureFollowsItemSize(bool follows) |
| bool | textureFollowsItemSize() const |
Funciones públicas reimplementadas
| virtual bool | isTextureProvider() const override |
| virtual void | releaseResources() override |
| virtual QSGTextureProvider * | textureProvider() const override |
Señales
| void | mirrorVerticallyChanged(bool) |
| void | textureFollowsItemSizeChanged(bool) |
Descripción detallada
Advertencia: Esta clase sólo es funcional cuando Qt Quick está renderizando vía OpenGL. No es compatible con otras APIs gráficas, como Vulkan o Metal. Debe ser tratada como una clase heredada que sólo está presente para permitir que las aplicaciones Qt 5 funcionen sin interrupciones de compatibilidad de código fuente, siempre y cuando se vinculen a OpenGL.
En la mayoría de las plataformas, el renderizado ocurrirá en un hilo dedicado. Por esta razón, la clase QQuickFramebufferObject impone una estricta separación entre la implementación del ítem y el renderizado del FBO. Toda la lógica del elemento, como las propiedades y las funciones de ayuda relacionadas con la interfaz de usuario que necesita QML, deben ubicarse en una subclase de la clase QQuickFramebufferObject. Todo lo relacionado con el renderizado debe ubicarse en la clase QQuickFramebufferObject::Renderer.
Para evitar race conditions y problemas de lectura/escritura desde dos hilos es importante que el renderizador y el item nunca lean o escriban variables compartidas. La comunicación entre el item y el renderizador debe realizarse principalmente a través de la función QQuickFramebufferObject::Renderer::synchronize(). Esta función será llamada en el hilo de renderizado mientras el hilo GUI está bloqueado.
También es posible utilizar conexiones en cola o eventos para la comunicación entre el item y el renderizador.
Tanto el Renderizador como el FBO son gestionados internamente.
Para renderizar en el FBO, el usuario debe subclasificar la clase Renderer y reimplementar su función Renderer::render(). La subclase Renderer se devuelve desde createRenderer().
El tamaño del FBO se adaptará por defecto al tamaño del elemento. Si se prefiere un tamaño fijo, establezca textureFollowsItemSize a false y devuelva una textura de su elección desde QQuickFramebufferObject::Renderer::createFramebufferObject().
A partir de Qt 5.4, la clase QQuickFramebufferObject es un texture provider y puede utilizarse directamente en ShaderEffects y otras clases que consumen proveedores de texturas.
Ver también Gráfico de Escena y Renderizado.
Documentación de Propiedades
mirrorVertically : bool
Esta propiedad controla si el tamaño del contenido del FBO debe ser reflejado verticalmente cuando se dibuja. Esto permite una fácil integración de código de renderizado de terceros que no siga las expectativas estándar.
El valor por defecto es false.
Funciones de acceso:
| bool | mirrorVertically() const |
| void | setMirrorVertically(bool enable) |
Señal de notificador:
| void | mirrorVerticallyChanged(bool) |
textureFollowsItemSize : bool
Esta propiedad controla si el tamaño de la textura del FBO debe seguir las dimensiones del ítem QQuickFramebufferObject. Cuando esta propiedad es false, el FBO se creará una vez la primera vez que se muestre. Si es true, el FBO será recreado cada vez que las dimensiones del ítem cambien.
El valor por defecto es true.
Funciones de acceso:
| bool | textureFollowsItemSize() const |
| void | setTextureFollowsItemSize(bool follows) |
Señal del notificador:
| void | textureFollowsItemSizeChanged(bool) |
Documentación de la función miembro
QQuickFramebufferObject::QQuickFramebufferObject(QQuickItem *parent = nullptr)
Construye un nuevo QQuickFramebufferObject con el padre parent.
[pure virtual] QQuickFramebufferObject::Renderer *QQuickFramebufferObject::createRenderer() const
Reimplemente esta función para crear un renderizador utilizado para renderizar en el FBO.
Esta función será llamada en el hilo de renderizado mientras el hilo GUI está bloqueado.
[override virtual] bool QQuickFramebufferObject::isTextureProvider() const
Reimplementa: QQuickItem::isTextureProvider() const.
[override virtual] void QQuickFramebufferObject::releaseResources()
Reimplementa: QQuickItem::releaseResources().
[override virtual] QSGTextureProvider *QQuickFramebufferObject::textureProvider() const
Reimplementa: 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.