En esta página

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

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

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.