QQuickFramebufferObject::Renderer Class
class QQuickFramebufferObject::RendererFunciones protegidas
| 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() |
Descripción detallada
La clase QQuickFramebufferObject::Renderer se utiliza para implementar la lógica de renderizado de un QQuickFramebufferObject.
Documentación de las funciones miembro
[protected] Renderer::Renderer()
Construye un nuevo renderizador.
Esta función se ejecuta durante la fase de sincronización del gráfico de la escena cuando el subproceso GUI está bloqueado.
[virtual noexcept protected] Renderer::~Renderer()
El Renderizador se elimina automáticamente cuando se limpian los recursos del gráfico de escena para el elemento QQuickFramebufferObject.
Esta función se llama en el hilo de renderizado.
[virtual protected] QOpenGLFramebufferObject *Renderer::createFramebufferObject(const QSize &size)
Esta función es llamada cuando se necesita un nuevo FBO. Esto ocurre en el fotograma inicial. Si QQuickFramebufferObject::textureFollowsItemSize se establece en true, se llama de nuevo cada vez que cambian las dimensiones del elemento.
El FBO devuelto puede tener cualquier aditamento. Si QOpenGLFramebufferObjectFormat indica que el FBO debe ser multimuestreado, la implementación interna del Renderizador asignará un segundo FBO y mezclará el FBO multimuestreado en el FBO utilizado para mostrar la textura.
Nota: Algún hardware tiene problemas con tamaños pequeños de FBO. size tiene esto en cuenta, así que ten cuidado cuando sobreescribas el tamaño con un tamaño fijo. Un tamaño mínimo de 64x64 debería funcionar siempre.
Nota: size tiene en cuenta la proporción de píxeles del dispositivo, lo que significa que ya está multiplicado por el factor de escala correcto. Al mover la ventana que contiene el elemento QQuickFramebufferObject a una pantalla con una configuración diferente, el FBO se vuelve a crear automáticamente y esta función se invoca con el tamaño correcto.
[protected] QOpenGLFramebufferObject *Renderer::framebufferObject() const
Devuelve el objeto framebuffer en el que se está renderizando actualmente.
[protected] void Renderer::invalidateFramebufferObject()
Llama a esta función durante synchronize() para invalidar el FBO actual. Esto hará que se cree un nuevo FBO con createFramebufferObject().
[pure virtual protected] void Renderer::render()
Esta función es llamada cuando el FBO debe ser renderizado. El framebuffer está enlazado en este punto y el glViewport se ha configurado para que coincida con el tamaño del FBO.
El FBO se desligará automáticamente después de que la función regrese.
Nota: No asumas que el estado de OpenGL está configurado por defecto cuando esta función es invocada, o que se mantiene entre llamadas. Tanto el renderizador de Qt Quick como el código de renderizado personalizado utilizan el mismo contexto OpenGL. Esto significa que el estado puede haber sido modificado por Quick antes de invocar esta función.
Nota: Se recomienda llamar a QQuickOpenGLUtils::resetOpenGLState() antes de devolver. Esto restablece el estado OpenGL utilizado por el renderizador Qt Quick y evita así la interferencia de los cambios de estado realizados por el código de renderizado en esta función.
[virtual protected] void Renderer::synchronize(QQuickFramebufferObject *item)
Esta función es llamada como resultado de QQuickFramebufferObject::update().
Utilice esta función para actualizar el renderizador con los cambios que se han producido en el elemento. item es el elemento que ha instanciado este renderizador. La función es llamada una vez antes de que el FBO sea creado.
Por ejemplo, si el item tiene una propiedad de color que es controlada por QML, uno debería llamar a QQuickFramebufferObject::update() y usar synchronize() para copiar el nuevo color en el renderizador para que pueda ser usado para renderizar el siguiente frame.
Esta función es el único lugar en el que es seguro para el renderizador y el elemento leer y escribir los miembros del otro.
[protected] void Renderer::update()
Llama a esta función cuando el FBO debe ser renderizado de nuevo.
Esta función puede ser llamada desde render() para forzar al FBO a ser renderizado de nuevo antes del siguiente frame.
Nota: Esta función debe ser usada desde dentro del renderizador. Para actualizar el elemento en el hilo GUI, utilice 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.