En esta página

QQuickRhiItem Class

La clase QQuickRhiItem es una alternativa portable a QQuickFramebufferObject que no está ligada a OpenGL, sino que permite integrar el renderizado con las APIs de QRhi con Qt Quick. Más...

Cabecera: #include <QQuickRhiItem>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
Desde: Qt 6.7
Hereda: QQuickItem

Tipos Públicos

enum class TextureFormat { RGBA8, RGBA16F, RGBA32F, RGB10A2 }

Propiedades

Funciones públicas

QQuickRhiItem(QQuickItem *parent = nullptr)
virtual ~QQuickRhiItem() override
bool alphaBlending() const
QQuickRhiItem::TextureFormat colorBufferFormat() const
QSize effectiveColorBufferSize() const
int fixedColorBufferHeight() const
int fixedColorBufferWidth() const
bool isMirrorVerticallyEnabled() const
int sampleCount() const
void setAlphaBlending(bool enable)
void setColorBufferFormat(QQuickRhiItem::TextureFormat format)
void setFixedColorBufferHeight(int height)
void setFixedColorBufferWidth(int width)
void setMirrorVertically(bool enable)
void setSampleCount(int samples)

Funciones públicas reimplementadas

virtual bool isTextureProvider() const override
virtual QSGTextureProvider *textureProvider() const override

Señales

Funciones protegidas

virtual QQuickRhiItemRenderer *createRenderer() = 0
bool isAutoRenderTargetEnabled() const
void setAutoRenderTarget(bool enabled)

Funciones protegidas reimplementadas

virtual bool event(QEvent *e) override
virtual void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override
virtual void releaseResources() override

Descripción detallada

QQuickRhiItem es efectivamente la contrapartida de QRhiWidget en el mundo de Qt Quick. Ambos están pensados para ser subclasificados, y ambos permiten la grabación de renderizado basado en QRhi que se dirige a un buffer de color fuera de la pantalla. La imagen 2D resultante se compone con el resto de la escena Qt Quick.

Nota: Aunque QQuickRhiItem es una API pública de Qt, la familia de clases QRhi del módulo Qt Gui, que incluye QShader y QShaderDescription, ofrece garantías de compatibilidad limitadas. No existen garantías de compatibilidad binaria o de código fuente para estas clases, lo que significa que sólo se garantiza que la API funcione con la versión de Qt con la que se desarrolló la aplicación. Sin embargo, los cambios incompatibles con el código fuente se mantendrán al mínimo y sólo se realizarán en versiones menores (6.7, 6.8, etc.). qquickrhiitem.h no incluye directamente ninguna cabecera relacionada con QRhi. Para usar esas clases al implementar una subclase de QQuickRhiItem, enlace a Qt::GuiPrivate (si usa CMake), e incluya las cabeceras apropiadas con el prefijo rhi, por ejemplo #include <rhi/qrhi.h>.

QQuickRhiItem sustituye a la clase heredada QQuickFramebufferObject. Esta última está inherentemente ligada a OpenGL / OpenGL ES, mientras que QQuickRhiItem trabaja con las clases QRhi, permitiendo ejecutar el mismo código de renderizado con Vulkan, Metal, Direct 3D 11/12, y OpenGL / OpenGL ES. Conceptual y funcionalmente están muy cerca, y migrar de QQuickFramebufferObject a QQuickRhiItem es sencillo. QQuickFramebufferObject sigue estando disponible para asegurar la compatibilidad del código de aplicación existente que trabaja directamente con la API OpenGL.

Nota: QQuickRhiItem no será funcional cuando se utilice la adaptación software del gráfico de escena Qt Quick.

En la mayoría de las plataformas, el renderizado del gráfico de escena, y por tanto el renderizado realizado por QQuickRhiItem ocurrirá en un hilo dedicado. Por esta razón, la clase QQuickRhiItem impone una separación estricta entre la implementación del elemento (la subclase QQuickItem ) y la lógica de renderizado real. Toda la lógica del elemento, como las propiedades y las funciones de ayuda relacionadas con la interfaz de usuario expuestas a QML deben estar ubicadas en la subclase QQuickRhiItem. Todo lo relacionado con el renderizado debe ubicarse en la clase QQuickRhiItemRenderer. 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 QQuickRhiItem::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 ítem y el renderizador.

Las aplicaciones deben subclasificar tanto QQuickRhiItem como QQuickRhiItemRenderer. La función virtual pura createRenderer() debe reimplementarse para devolver una nueva instancia de la subclase QQuickRhiItemRenderer.

Al igual que con QRhiWidget, QQuickRhiItem gestiona automáticamente el buffer de color, que es una textura 2D (QRhiTexture) normalmente, o un QRhiRenderBuffer cuando se utiliza multimuestreo. (algunas APIs 3D diferencian entre texturas y renderbuffers, mientras que con algunas otras el recurso nativo subyacente es el mismo; los renderbuffers se usan principalmente para permitir el multimuestreo con OpenGL ES 3.0)

El tamaño de la textura se adaptará por defecto al tamaño del elemento (teniendo en cuenta device pixel ratio ). Si el tamaño del objeto cambia, la textura se recreará con el tamaño correcto. Si se prefiere un tamaño fijo, establezca fixedColorBufferWidth y fixedColorBufferHeight en valores distintos de cero.

QQuickRhiItem es un texture provider y puede ser utilizado directamente en ShaderEffects y otras clases que consumen proveedores de textura.

Aunque no es un caso de uso primario, QQuickRhiItem también permite incorporar código de renderizado que utilice directamente una API de gráficos 3D como Vulkan, Metal, Direct 3D u OpenGL. Ver QRhiCommandBuffer::beginExternal() para más detalles sobre la grabación de comandos nativos dentro de un pase de render QRhi, así como QRhiTexture::createFrom() para una forma de envolver una textura nativa existente y luego usarla con QRhi en un pase de render posterior. Ver también QQuickGraphicsConfiguration con respecto a la configuración del entorno nativo de la API 3D (por ejemplo, extensiones de dispositivo) y tenga en cuenta que el QQuickWindow se puede asociar con un QVulkanInstance personalizado llamando a QWindow::setVulkanInstance() con suficiente antelación.

Nota: QQuickRhiItem siempre utiliza la misma instancia QRhi que utiliza QQuickWindow (y por extensión, el mismo contexto OpenGL, dispositivo Vulkan, etc.). Para elegir qué API de gráficos 3D subyacente se utiliza, llame a setGraphicsApi() en el QQuickWindow con suficiente antelación. No es posible cambiarlo una vez que el gráfico de la escena se ha inicializado, y todas las instancias de QQuickRhiItem en la escena renderizarán usando la misma API 3D.

Un ejemplo sencillo

Tomemos la siguiente subclase de QQuickRhiItem. Se muestra aquí en forma completa. Renderiza un triángulo simple con una proyección en perspectiva, donde el triángulo es rotado basado en la propiedad angle del item personalizado. (lo que significa que puede ser manejado por ejemplo con animaciones como NumberAnimation desde QML)

class ExampleRhiItemRenderer : public QQuickRhiItemRenderer
{
public:
    void initialize(QRhiCommandBuffer *cb) override;
    void synchronize(QQuickRhiItem *item) override;
    void render(QRhiCommandBuffer *cb) override;

private:
    QRhi *m_rhi = nullptr;
    std::unique_ptr<QRhiBuffer> m_vbuf;
    std::unique_ptr<QRhiBuffer> m_ubuf;
    std::unique_ptr<QRhiShaderResourceBindings> m_srb;
    std::unique_ptr<QRhiGraphicsPipeline> m_pipeline;
    QMatrix4x4 m_viewProjection;
    float m_angle = 0.0f;
};

class ExampleRhiItem : public QQuickRhiItem
{
    Q_OBJECT
    QML_NAMED_ELEMENT(ExampleRhiItem)
    Q_PROPERTY(float angle READ angle WRITE setAngle NOTIFY angleChanged)

public:
    QQuickRhiItemRenderer *createRenderer() override;

    float angle() const { return m_angle; }
    void setAngle(float a);

signals:
    void angleChanged();

private:
    float m_angle = 0.0f;
};

QQuickRhiItemRenderer *ExampleRhiItem::createRenderer()
{
    return new ExampleRhiItemRenderer;
}

void ExampleRhiItem::setAngle(float a)
{
    if (m_angle == a)
        return;

    m_angle = a;
    emit angleChanged();
    update();
}

void ExampleRhiItemRenderer::synchronize(QQuickRhiItem *rhiItem)
{
    ExampleRhiItem *item = static_cast<ExampleRhiItem *>(rhiItem);
    if (item->angle() != m_angle)
        m_angle = item->angle();
}

static QShader getShader(const QString &name)
{
    QFile f(name);
    return f.open(QIODevice::ReadOnly) ? QShader::fromSerialized(f.readAll()) : QShader();
}

static float vertexData[] = {
    0.0f,   0.5f,   1.0f, 0.0f, 0.0f,
    -0.5f,  -0.5f,   0.0f, 1.0f, 0.0f,
    0.5f,  -0.5f,   0.0f, 0.0f, 1.0f,
};

void ExampleRhiItemRenderer::initialize(QRhiCommandBuffer *cb)
{
    if (m_rhi != rhi()) {
        m_pipeline.reset();
        m_rhi = rhi();
    }

    if (!m_pipeline) {
        m_vbuf.reset(m_rhi->newBuffer(QRhiBuffer::Immutable, QRhiBuffer::VertexBuffer, sizeof(vertexData)));
        m_vbuf->create();

        m_ubuf.reset(m_rhi->newBuffer(QRhiBuffer::Dynamic, QRhiBuffer::UniformBuffer, 64));
        m_ubuf->create();

        m_srb.reset(m_rhi->newShaderResourceBindings());
        m_srb->setBindings({
            QRhiShaderResourceBinding::uniformBuffer(0, QRhiShaderResourceBinding::VertexStage, m_ubuf.get()),
        });
        m_srb->create();

        m_pipeline.reset(m_rhi->newGraphicsPipeline());
        m_pipeline->setShaderStages({
            { QRhiShaderStage::Vertex, getShader(QLatin1String(":/shaders/color.vert.qsb")) },
            { QRhiShaderStage::Fragment, getShader(QLatin1String(":/shaders/color.frag.qsb")) }
        });
        QRhiVertexInputLayout inputLayout;
        inputLayout.setBindings({
            { 5 * sizeof(float) }
        });
        inputLayout.setAttributes({
            { 0, 0, QRhiVertexInputAttribute::Float2, 0 },
            { 0, 1, QRhiVertexInputAttribute::Float3, 2 * sizeof(float) }
        });
        m_pipeline->setVertexInputLayout(inputLayout);
        m_pipeline->setShaderResourceBindings(m_srb.get());
        m_pipeline->setRenderPassDescriptor(renderTarget()->renderPassDescriptor());
        m_pipeline->create();

        QRhiResourceUpdateBatch *resourceUpdates = m_rhi->nextResourceUpdateBatch();
        resourceUpdates->uploadStaticBuffer(m_vbuf.get(), vertexData);
        cb->resourceUpdate(resourceUpdates);
    }

    const QSize outputSize = renderTarget()->pixelSize();
    m_viewProjection = m_rhi->clipSpaceCorrMatrix();
    m_viewProjection.perspective(45.0f, outputSize.width() / (float) outputSize.height(), 0.01f, 1000.0f);
    m_viewProjection.translate(0, 0, -4);
}

void ExampleRhiItemRenderer::render(QRhiCommandBuffer *cb)
{
    QRhiResourceUpdateBatch *resourceUpdates = m_rhi->nextResourceUpdateBatch();
    QMatrix4x4 modelViewProjection = m_viewProjection;
    modelViewProjection.rotate(m_angle, 0, 1, 0);
    resourceUpdates->updateDynamicBuffer(m_ubuf.get(), 0, 64, modelViewProjection.constData());

    const QColor clearColor = QColor::fromRgbF(0.4f, 0.7f, 0.0f, 1.0f);
    cb->beginPass(renderTarget(), clearColor, { 1.0f, 0 }, resourceUpdates);

    cb->setGraphicsPipeline(m_pipeline.get());
    const QSize outputSize = renderTarget()->pixelSize();
    cb->setViewport(QRhiViewport(0, 0, outputSize.width(), outputSize.height()));
    cb->setShaderResources();
    const QRhiCommandBuffer::VertexInput vbufBinding(m_vbuf.get(), 0);
    cb->setVertexInput(0, 1, &vbufBinding);
    cb->draw(3);

    cb->endPass();
}

Es notable que esta simple clase es casi exactamente igual al código mostrado en la introducción de QRhiWidget. Los sombreadores de vértices y fragmentos son los mismos también. Estos se proporcionan como código fuente GLSL al estilo Vulkan y deben ser procesados primero por la infraestructura de shaders de Qt. Esto se consigue ejecutando manualmente la herramienta de línea de comandos qsb, o utilizando la función qt_add_shaders() en CMake. El QQuickRhiItem carga estos archivos pre-procesados .qsb que se envían con la aplicación. Ver Qt Shader Tools para más información sobre la infraestructura de traducción de shaders de Qt.

color.vert

#version 440
layout(location = 0) in vec4 position;
layout(location = 1) in vec3 color;
layout(location = 0) out vec3 v_color;
layout(std140, binding = 0) uniform buf {
    mat4 mvp;
};

void main()
{
    v_color = color;
    gl_Position = mvp * position;
}

color.frag

#version 440
layout(location = 0) in vec3 v_color;
layout(location = 0) out vec4 fragColor;

void main()
{
    fragColor = vec4(v_color, 1.0);
}

Una vez expuesto a QML (nótese el QML_NAMED_ELEMENT), nuestro elemento personalizado puede ser instanciado en cualquier escena. (después de importar el URI apropiado especificado para qt_add_qml_module en el proyecto CMake)

ExampleRhiItem {
    anchors.fill: parent
    anchors.margins: 10
    NumberAnimation on angle { from: 0; to: 360; duration: 5000; loops: Animation.Infinite }
}

Véase Scene Graph - RHI Texture Item para un ejemplo más complejo.

Véase también QQuickRhiItemRenderer, Gráfico de escena - Elemento de textura RHI, QRhi, y Gráfico de escena y renderizado.

Documentación de tipos de miembros

enum class QQuickRhiItem::TextureFormat

Especifica el formato de la textura de fondo a la que renderiza QQuickRhiItem.

ConstanteValorDescripción
QQuickRhiItem::TextureFormat::RGBA80Véase QRhiTexture::RGBA8. Este es el valor por defecto.
QQuickRhiItem::TextureFormat::RGBA16F1Véase QRhiTexture::RGBA16F.
QQuickRhiItem::TextureFormat::RGBA32F2Véase QRhiTexture::RGBA32F.
QQuickRhiItem::TextureFormat::RGB10A23Véase QRhiTexture::RGB10A2.

Véase también QRhiTexture.

Documentación de propiedades

alphaBlending : bool

Controla si la mezcla está siempre activada cuando se dibuja el quad texturizado con el contenido generado por el QQuickRhiItem y su renderizador.

El valor por defecto es false. Esto es por razones de rendimiento: si la semitransparencia no está involucrada, porque el QQuickRhiItemRenderer se borra a un color opaco y nunca renderiza fragmentos con alfa menor que 1, entonces no tiene sentido habilitar la mezcla.

Si la subclase QQuickRhiItemRenderer renderiza con semitransparencia, establezca esta propiedad en true.

Nota: Bajo ciertas condiciones, la mezcla se producirá independientemente del valor de esta propiedad. Por ejemplo, si la opacity del elemento (más precisamente, la opacidad combinada heredada de la cadena padre) es menor que 1, la mezcla se activará automáticamente incluso cuando esta propiedad esté establecida a false.

Nota: El gráfico de escena Qt Quick se basa en el alfa premultiplicado y lo espera. Por ejemplo, si la intención es borrar el fondo en el renderizador a un valor alfa de 0.5, entonces asegúrese de multiplicar los valores de color rojo, verde y azul claro con 0.5 también. De lo contrario, los resultados de la mezcla serán incorrectos.

Funciones de acceso:

bool alphaBlending() const
void setAlphaBlending(bool enable)

Señal del notificador:

void alphaBlendingChanged()

colorBufferFormat : TextureFormat

Esta propiedad controla el formato de textura para la textura utilizada como búfer de color. El valor por defecto es TextureFormat::RGBA8. QQuickRhiItem soporta el renderizado a un subconjunto de formatos soportados por QRhiTexture. Sólo deben especificarse los formatos soportados por QRhi::isTextureFormatSupported(), de lo contrario el renderizado no será funcional.

Nota: Establecer un nuevo formato cuando el elemento y su renderizador ya están inicializados y han renderizado implica que todos los objetos QRhiGraphicsPipeline creados por el renderizador pueden quedar inutilizables, si el QRhiRenderPassDescriptor asociado es ahora incompatible debido al diferente formato de textura. De forma similar a cambiar sampleCount dinámicamente, esto significa que las implementaciones de initialize() o render() deben entonces encargarse de liberar los pipelines existentes y crear nuevos.

Funciones de acceso:

QQuickRhiItem::TextureFormat colorBufferFormat() const
void setColorBufferFormat(QQuickRhiItem::TextureFormat format)

Notificador de señal:

void colorBufferFormatChanged()

[read-only] effectiveColorBufferSize : QSize

Esta propiedad muestra el tamaño, en píxeles, del búfer de color subyacente ( QRhiTexture o QRhiRenderBuffer). Se proporciona para su uso en el subproceso GUI (principal), en enlaces QML o JavaScript.

Nota: Las implementaciones deQQuickRhiItemRenderer, que operan en el subproceso de renderizado del gráfico de escena, no deben utilizar esta propiedad. Deberían consultar el tamaño en render target.

Nota: El valor está disponible de forma asíncrona desde la perspectiva del subproceso principal, en el sentido de que el valor cambia cuando se produce la renderización en el subproceso de renderización. Esto significa que esta propiedad es útil principalmente en enlaces QML. El código de la aplicación no debe asumir que el valor ya está actualizado cuando se construye el objeto QQuickRhiItem.

Esta propiedad es de sólo lectura.

Funciones de acceso:

QSize effectiveColorBufferSize() const

Señal del notificador:

void effectiveColorBufferSizeChanged()

fixedColorBufferHeight : int

La altura fija, en píxeles, de la textura asociada al elemento. Relevante cuando se desea un tamaño de textura fijo que no dependa del tamaño del ítem. Este tamaño no tiene ningún efecto sobre la geometría del elemento (su tamaño y ubicación dentro de la escena), lo que significa que el contenido de la textura aparecerá estirado (escalado hacia arriba) o escalado hacia abajo en el área del elemento.

Por defecto, el valor es 0. Un valor de 0 significa que el tamaño de la textura sigue el tamaño del elemento. (texture size = item size * device pixel ratio).

Ver fixedColorBufferWidth para más información sobre los casos de uso para establecer una anchura y altura fijas.

Funciones de acceso:

int fixedColorBufferHeight() const
void setFixedColorBufferHeight(int height)

Señal del notificador:

void fixedColorBufferHeightChanged()

fixedColorBufferWidth : int

La anchura fija, en píxeles, de la textura asociada al elemento o del búfer de renderizado. Relevante cuando se desea un tamaño de búfer de color fijo que no dependa del tamaño del elemento. Este tamaño no tiene efecto sobre la geometría del elemento (su tamaño y ubicación dentro de la escena), lo que significa que el contenido de la textura aparecerá estirado (escalado) o reducido en el área del elemento.

Por ejemplo, establecer un tamaño que sea exactamente el doble del tamaño (en píxeles) del objeto realiza un supermuestreo 2x (renderizando al doble de resolución y reduciendo implícitamente la escala al texturizar el cuadrado correspondiente al objeto en la escena). Por otro lado, establecer un tamaño que sea la mitad del tamaño en píxeles del elemento permite renderizar a la mitad de la resolución y luego aumentar la escala de los resultados.

Por defecto, el valor es 0. Un valor de 0 significa que el tamaño de la textura sigue el tamaño del elemento. (texture size = item size * device pixel ratio).

Nota: La relación de píxeles del dispositivo (el factor de escala del compositor del sistema) puede tener un gran impacto en el rendimiento, ya que un factor de escala de 2 (200%) significa renderizar al doble de la resolución, es decir, el doble de lo que el desarrollador y el diseñador de la interfaz de usuario perciben como el tamaño del elemento, y luego reducir efectivamente la escala del contenido, de forma similar a lo que ocurre cuando se establece esta propiedad al doble del tamaño de píxel del elemento en un sistema donde la relación de píxeles del dispositivo es 1. Por lo tanto, se espera que esta propiedad sea la más adecuada para el rendimiento de la interfaz de usuario. Por lo tanto, se espera que esta propiedad se utilice raramente con tamaños mayores que el tamaño de píxel del elemento, ya que muchos sistemas de escritorio modernos no tienen ni la necesidad ni el presupuesto de rendimiento para ello, cuando el sistema utiliza de todos modos una relación de píxeles del dispositivo mayor que 1. En su lugar, el principal caso de uso para esta propiedad es establecer un tamaño más pequeño, con el fin de renderizar a una resolución más pequeña razonable en lugar de seguir ciegamente la geometría del elemento (y tal vez de la ventana), por grande que sea.

Funciones de acceso:

int fixedColorBufferWidth() const
void setFixedColorBufferWidth(int width)

Señal del notificador:

void fixedColorBufferWidthChanged()

mirrorVertically : bool

Esta propiedad controla si las UVs de textura se voltean al dibujar el quad texturizado. No tiene ningún efecto sobre el contenido de la memoria de color fuera de pantalla ni sobre el renderizado implementado por QQuickRhiItemRenderer.

El valor por defecto es false.

Funciones de acceso:

bool isMirrorVerticallyEnabled() const
void setMirrorVertically(bool enable)

Señal del notificador:

void mirrorVerticallyChanged()

sampleCount : int

Esta propiedad controla el número de muestras para el antialiasing multimuestra. Por defecto el valor es 1 lo que significa que el MSAA está desactivado.

Los valores válidos son 1, 4, 8, y a veces 16 y 32. QRhi::supportedSampleCounts() puede utilizarse para consultar los recuentos de muestras admitidos en tiempo de ejecución, pero normalmente las aplicaciones deberían solicitar 1 (sin MSAA), 4x (MSAA normal) u 8x (MSAA alto).

Nota: Establecer un nuevo valor implica que todos los objetos QRhiGraphicsPipeline creados por el renderizador deben utilizar el mismo recuento de muestras a partir de ese momento. Los objetos QRhiGraphicsPipeline existentes creados con un recuento de muestras diferente ya no deben utilizarse. Cuando cambia el valor, todas las memorias intermedias de color y profundidad se destruyen y se vuelven a crear automáticamente, y se invoca de nuevo a initialize(). Sin embargo, cuando isAutoRenderTargetEnabled() es false, dependerá de la aplicación gestionar esto con respecto al búfer de profundidad-esténcil o los búferes de color adicionales.

Cambiar el recuento de muestras del valor por defecto 1 a un valor superior implica que colorTexture() se convierte en nullptr y msaaColorBuffer() empieza a devolver un objeto válido. Volver a 1 (o 0), implica lo contrario: en la siguiente llamada a initialize() msaaColorBuffer() va a devolver nullptr, mientras que colorTexture() vuelve a ser válida. Además, resolveTexture() devuelve un QRhiTexture válido (no multimuestra) siempre que el recuento de muestras sea mayor que 1 (es decir, que se esté utilizando MSAA).

Funciones de acceso:

int sampleCount() const
void setSampleCount(int samples)

Señal notificadora:

void sampleCountChanged()

Véase también QQuickRhiItemRenderer::msaaColorBuffer() y QQuickRhiItemRenderer::resolveTexture().

Documentación de las funciones miembro

[explicit] QQuickRhiItem::QQuickRhiItem(QQuickItem *parent = nullptr)

Construye un nuevo QQuickRhiItem con la dirección parent.

[override virtual noexcept] QQuickRhiItem::~QQuickRhiItem()

Destructor.

[pure virtual protected] QQuickRhiItemRenderer *QQuickRhiItem::createRenderer()

Reimplemente esta función para crear y devolver una nueva instancia de una subclase de QQuickRhiItemRenderer.

Esta función será llamada en el hilo de renderizado mientras el hilo GUI está bloqueado.

[override virtual protected] bool QQuickRhiItem::event(QEvent *e)

Reimplementa: QQuickItem::event(QEvent *ev).

[override virtual protected] void QQuickRhiItem::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry)

Reimplementa: QQuickItem::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry).

[protected] bool QQuickRhiItem::isAutoRenderTargetEnabled() const

Devuelve la configuración actual de la gestión automática del búfer de profundidad-esténcil y del objetivo de renderizado.

Por defecto este valor es true.

Véase también setAutoRenderTarget().

[override virtual] bool QQuickRhiItem::isTextureProvider() const

Reimplementa: QQuickItem::isTextureProvider() const.

[override virtual protected] void QQuickRhiItem::releaseResources()

Reimplementa: QQuickItem::releaseResources().

[protected] void QQuickRhiItem::setAutoRenderTarget(bool enabled)

Controla si un depth-stencil QRhiRenderBuffer y un QRhiTextureRenderTarget son creados y mantenidos automáticamente por el elemento. El valor por defecto es true. Llame a esta función al principio, por ejemplo desde el constructor de la clase derivada, con enabled establecido en false para desactivar esto.

En modo automático, el tamaño y el número de muestras del búfer de profundidad sigue la configuración de la textura del búfer de color. En modo no automático, renderTarget() y depthStencilBuffer() siempre devuelven nullptr y depende de la implementación de initialize() de la aplicación encargarse de configurar y gestionar estos objetos.

[override virtual] QSGTextureProvider *QQuickRhiItem::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.