En esta página

QRhiTextureRenderTarget Class

Recurso de destino de renderizado de textura. Más...

Cabecera: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS GuiPrivate)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
Desde: Qt 6.6
Hereda: QRhiRenderTarget

Tipos Públicos

enum Flag { PreserveColorContents, PreserveDepthStencilContents, DoNotStoreDepthStencilContents }
flags Flags

Funciones Públicas

virtual bool create() = 0
QRhiTextureRenderTargetDescription description() const
QRhiTextureRenderTarget::Flags flags() const
virtual QRhiRenderPassDescriptor *newCompatibleRenderPassDescriptor() = 0
void setDescription(const QRhiTextureRenderTargetDescription &desc)
void setFlags(QRhiTextureRenderTarget::Flags f)

Funciones Públicas Reimplementadas

virtual QRhiResource::Type resourceType() const override

Descripción Detallada

Un objetivo de renderizado de textura permite renderizar en una o más texturas, opcionalmente con una textura de profundidad o un búfer de renderizado de profundidad/estensión.

Para el renderizado multimuestra el enfoque común es utilizar un renderbuffer como adjunto de color y establecer la textura de destino no multimuestra como resolve texture. Para más información, lea la descripción detallada de la clase QRhiColorAttachment.

Nota: Las texturas utilizadas en combinación con QRhiTextureRenderTarget deben crearse con la bandera QRhiTexture::RenderTarget.

El ejemplo más simple de crear un objetivo de renderizado con una textura como su único color adjunto:

QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, size, 1, QRhiTexture::RenderTarget);
texture->create();
QRhiTextureRenderTarget *rt = rhi->newTextureRenderTarget({ texture });
rp = rt->newCompatibleRenderPassDescriptor();
rt->setRenderPassDescriptor(rp);
rt->create();
// rt can now be used with beginPass()

Nota: Se trata de una API RHI con garantías de compatibilidad limitadas, véase QRhi para más detalles.

Documentación de tipos de miembros

enum QRhiTextureRenderTarget::Flag
flags QRhiTextureRenderTarget::Flags

Valores de bandera que describen el comportamiento de carga/almacenamiento para el objetivo de renderizado. El comportamiento de carga/almacenamiento puede estar integrado en los recursos nativos, dependiendo del backend, y por lo tanto necesita ser conocido de antemano y no puede ser cambiado sin reconstruir (y por lo tanto liberar y crear nuevos recursos nativos).

ConstanteValorDescripción
QRhiTextureRenderTarget::PreserveColorContents1 << 0Indica que el contenido de los archivos adjuntos de color debe cargarse al iniciar un pase de renderizado, en lugar de borrarse. Esto es potencialmente más caro, especialmente en GPUs móviles (en mosaico), pero permite preservar el contenido existente entre pases. Cuando se realiza un renderizado multimuestra con una textura resuelta, al establecer esta bandera también se solicita que los datos de color multimuestra se almacenen (escriban) en la textura multimuestra o en el búfer de renderizado. (Para el renderizado sin multimuestreo los datos de color siempre se almacenan, pero para MSAA almacenar los datos multimuestreo disminuye la eficiencia para ciertas arquitecturas de GPU, de ahí que por defecto no se escriban) Ten en cuenta, sin embargo, que esto no es portable: en algunos casos no hay textura multimuestreo intermedia a nivel de API gráfica, por ejemplo, cuando se utiliza GL_EXT_multisampled_render_to_texture de OpenGL ES, ya que todo está implícito, gestionado por la implementación de OpenGL ES. En ese caso, PreserveColorContents probablemente no tendrá ningún efecto. Por lo tanto, evite confiar en esta bandera cuando utilice renderizado multimuestra y el adjunto de color esté utilizando una multimuestra QRhiTexture (no QRhiRenderBuffer).
QRhiTextureRenderTarget::PreserveDepthStencilContents1 << 1Indica que el contenido de la textura de profundidad debe cargarse al iniciar un pase de renderizado, en lugar de borrarse. Sólo aplicable cuando se usa una textura como buffer de profundidad (QRhiTextureRenderTargetDescription::depthTexture() está establecido) porque los renderbuffers de profundidad/esténcil pueden no tener ningún respaldo físico y los datos pueden no ser escritos en primer lugar.
QRhiTextureRenderTarget::DoNotStoreDepthStencilContents1 << 2Indica que el contenido de la textura de profundidad no necesita ser escrito. Relevante sólo cuando un QRhiTexture, no QRhiRenderBuffer, se utiliza como el búfer de profundidad-esténcil, porque para QRhiRenderBuffer esto está implícito. Cuando se establece un depthResolveTexture, la bandera no es relevante, porque el comportamiento es entonces como si la bandera estuviera establecida. Este valor enum se introdujo en Qt 6.8.

El tipo Flags es un typedef para QFlags<Flag>. Almacena una combinación OR de valores Flag.

Documentación de la Función Miembro

[pure virtual] bool QRhiTextureRenderTarget::create()

Crea los recursos gráficos nativos correspondientes. Si ya hay recursos presentes debido a un create() anterior sin destroy() correspondiente, entonces destroy() se llama implícitamente primero.

Nota: renderPassDescriptor() debe establecerse antes de llamar a create(). Para obtener un QRhiRenderPassDescriptor compatible con el objetivo de renderizado, llame a newCompatibleRenderPassDescriptor() antes de create() pero después de establecer todos los demás parámetros, como description() y flags(). Para ahorrar recursos, reutilice el mismo QRhiRenderPassDescriptor con múltiples instancias de QRhiTextureRenderTarget, siempre que sea posible. Compartir el mismo descriptor de pase de renderizado sólo es posible cuando los objetivos de renderizado tienen el mismo número y tipo de adjuntos (las texturas reales pueden diferir) y las mismas banderas.

Nota: los recursos, como las instancias de QRhiTexture, a los que se hace referencia en description() ya deben haber recibido una llamada a create().

Devuelve true si la operación se ha realizado correctamente, false si ha fallado. Independientemente del valor de retorno, llamar a destroy() es siempre seguro.

QRhiTextureRenderTargetDescription QRhiTextureRenderTarget::description() const

Devuelve la descripción del objetivo de renderizado.

Véase también setDescription().

QRhiTextureRenderTarget::Flags QRhiTextureRenderTarget::flags() const

Devuelve las banderas configuradas actualmente.

Véase también setFlags().

[pure virtual] QRhiRenderPassDescriptor *QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor()

Devuelve un nuevo QRhiRenderPassDescriptor compatible con este objetivo de renderizado.

El valor devuelto se utiliza de dos maneras: se puede pasar a setRenderPassDescriptor() y QRhiGraphicsPipeline::setRenderPassDescriptor(). Un descriptor de pase de renderizado describe los archivos adjuntos (color, profundidad/esténcil) y el comportamiento de carga/almacenamiento que pueden verse afectados por flags(). Un QRhiGraphicsPipeline sólo puede utilizarse en combinación con un objetivo de renderizado que tenga un compatible QRhiRenderPassDescriptor fijado.

Dos instancias QRhiTextureRenderTarget pueden compartir el mismo descriptor de pase de renderizado siempre que tengan el mismo número y tipo de anexos. Las instancias QRhiTexture o QRhiRenderBuffer asociadas no forman parte del descriptor del pase de renderizado, por lo que pueden diferir en las dos instancias QRhiTextureRenderTarget.

Nota: los recursos, como las instancias QRhiTexture, a los que se hace referencia en description() ya deben tener create() ejecutada.

Véase también create().

[override virtual] QRhiResource::Type QRhiTextureRenderTarget::resourceType() const

Reimplementa: QRhiResource::resourceType() const.

Devuelve el tipo de recurso.

void QRhiTextureRenderTarget::setDescription(const QRhiTextureRenderTargetDescription &desc)

Establece la descripción del objetivo de renderizado desc.

Véase también description().

void QRhiTextureRenderTarget::setFlags(QRhiTextureRenderTarget::Flags f)

Establece las banderas en f.

Véase también flags().

© 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.