En esta página

QRhiColorAttachment Class

Describe el accesorio de un solo color de un objetivo de renderizado. 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

Funciones Públicas

QRhiColorAttachment()
QRhiColorAttachment(QRhiRenderBuffer *renderBuffer)
QRhiColorAttachment(QRhiTexture *texture)
int layer() const
int level() const
(since 6.7) int multiViewCount() const
QRhiRenderBuffer *renderBuffer() const
int resolveLayer() const
int resolveLevel() const
QRhiTexture *resolveTexture() const
void setLayer(int layer)
void setLevel(int level)
(since 6.7) void setMultiViewCount(int count)
void setRenderBuffer(QRhiRenderBuffer *rb)
void setResolveLayer(int layer)
void setResolveLevel(int level)
void setResolveTexture(QRhiTexture *tex)
void setTexture(QRhiTexture *tex)
QRhiTexture *texture() const

Descripción detallada

Un adjunto de color puede ser QRhiTexture o QRhiRenderBuffer. El primero, es decir, cuando texture() está establecido, se utiliza en la mayoría de los casos. QRhiColorAttachment se utiliza habitualmente en combinación con QRhiTextureRenderTargetDescription.

Nota: texture() y renderBuffer() no pueden estar ambos activados (ser no nulos al mismo tiempo).

Se recomienda utilizar renderBuffer sólo cuando sea necesario el muestreo múltiple. Confiar en QRhi::MultisampleRenderBuffer es una mejor opción que QRhi::MultisampleTexture en la práctica, ya que el primero está disponible en más configuraciones de tiempo de ejecución (por ejemplo, cuando se ejecuta en OpenGL ES 3.0 que no tiene soporte para texturas multimuestreo, pero sí para renderbuffers multimuestreo).

Cuando el objetivo es una textura no multimuestra, layer() y level() indican la capa objetivo (índice de cara 0-5 para cubemaps) y el nivel mip. Para las texturas 3D layer() especifica la rebanada (una imagen 2D dentro de la textura 3D) a renderizar. Para matrices de texturas layer() es el índice de la matriz.

Cuando texture() o renderBuffer() es multimuestra, resolveTexture() puede establecerse opcionalmente. Cuando se establece, las muestras se resuelven automáticamente en esa textura (no multimuestra) al final del pase de renderizado. Cuando se renderiza en un renderbuffers multimuestra, esta es la única manera de obtener contenido resuelto, no multimuestra de ellos. Las texturas multimuestra permiten el muestreo en los shaders, por lo que para ellos esta es sólo una opción.

Nota: cuando la resolución está activada, es posible que los datos multimuestra no se escriban en absoluto. Esto significa que el multisample texture() no debe ser usado después con shaders para muestreo cuando resolveTexture() está activado.

Nota: Se trata de una API RHI con garantías de compatibilidad limitadas; consulte QRhi para obtener más detalles.

Véase también QRhiTextureRenderTargetDescription.

Documentación de las funciones miembro

[constexpr noexcept] QRhiColorAttachment::QRhiColorAttachment()

Construye una descripción de color adjunta vacía.

QRhiColorAttachment::QRhiColorAttachment(QRhiRenderBuffer *renderBuffer)

Construye una descripción de adjunto de color que especifica renderBuffer como el búfer de color asociado.

QRhiColorAttachment::QRhiColorAttachment(QRhiTexture *texture)

Construye una descripción de adjunto de color que especifica texture como el búfer de color asociado.

int QRhiColorAttachment::layer() const

Devuelve el índice de la capa (cara del cubemap o capa del array). 0 por defecto.

Véase también setLayer().

int QRhiColorAttachment::level() const

Devuelve el nivel de mip. 0 por defecto.

Véase también setLevel().

[since 6.7] int QRhiColorAttachment::multiViewCount() const

Devuelve el número actual de vistas. El valor predeterminado es 0, lo que indica que el objetivo de renderizado con este color adjunto no se va a utilizar con el renderizado multivista.

Esta función se introdujo en Qt 6.7.

Véase también setMultiViewCount().

QRhiRenderBuffer *QRhiColorAttachment::renderBuffer() const

Devuelve el renderbuffer al que hace referencia esta descripción de adjunto, o nullptr si no hay ninguno.

En la práctica, asociar un QRhiRenderBuffer con un QRhiColorAttachment tiene más sentido cuando se configura un renderizado multimuestra a través de un búfer de renderizado multimuestra color que luego se resuelve en una textura no multimuestra al final del pase de renderizado.

Véase también setRenderBuffer().

int QRhiColorAttachment::resolveLayer() const

Devuelve la capa de textura de resolución establecida actualmente. Por defecto es 0.

Véase también setResolveLayer().

int QRhiColorAttachment::resolveLevel() const

Devuelve el nivel de mip de la textura de resolución actual. Por defecto es 0.

Ver también setResolveLevel().

QRhiTexture *QRhiColorAttachment::resolveTexture() const

Devuelve la textura resuelta a la que hace referencia la descripción de este adjunto, o nullptr si no hay ninguna.

Establecer una textura de resolución no nula es aplicable cuando el adjunto hace referencia a una textura multimuestra o a un búfer de renderizado. El QRhiTexture en el resolveTexture() es entonces una textura 2D no multimuestra (o matriz de texturas) con el mismo tamaño (pero un recuento de muestras de 1). El contenido multimuestra se resuelve automáticamente en esta textura al final de cada pasada de renderizado.

Véase también setResolveTexture().

void QRhiColorAttachment::setLayer(int layer)

Establece el índice layer.

Véase también layer().

void QRhiColorAttachment::setLevel(int level)

Establece el mip level.

Véase también level().

[since 6.7] void QRhiColorAttachment::setMultiViewCount(int count)

Establece la vista count. Establecer un valor mayor que 1 indica que el objetivo de renderizado con este color adjunto se va a utilizar con renderizado multivista. El valor por defecto es 0. Los valores inferiores a 2 indican que no se va a utilizar el renderizado multivista.

Cuando count se establece en 2 o mayor, el color adjunto debe estar asociado con una matriz de textura 2D. layer() y multiViewCount() definen conjuntamente el rango de elementos de la matriz de texturas a los que se dirige el renderizado multivista.

Por ejemplo, si layer es 0 y multiViewCount es 2, la matriz de textura debe tener 2 (o más) elementos, y la renderización multivista tendrá como objetivo los elementos 0 y 1. La variable gl_ViewIndex en los shaders tiene un valor de 0 o 1 entonces, donde la vista 0 corresponde al elemento de matriz de textura 0, y la vista 1 al elemento de matriz 1.

Nota: Establecer un count mayor que 1, usar un array de texturas como texture(), y llamar a beginPass() en un QRhiTextureRenderTarget con este color adjunto implica renderizado multivista para todo el pase de render. multiViewCount() no debe establecerse a menos que se desee un renderizado multivista. Multiview no puede ser usado con tipos de texturas que no sean matrices de texturas 2D. (aunque las texturas 3D pueden funcionar, dependiendo de la API gráfica y del backend; no obstante, se aconseja a las aplicaciones no confiar en ello y utilizar únicamente matrices de texturas 2D como objetivos de renderizado de la renderización multivista).

Ver GL_OVR_multiview para más detalles sobre el renderizado multivista. Tenga en cuenta que Qt requiere GL_OVR_multiview2 también, cuando se ejecuta en OpenGL (ES).

El renderizado multivista sólo está disponible cuando la característica MultiView es reportada como soportada desde isFeatureSupported().

Nota: Para la portabilidad, tenga en cuenta las limitaciones que existen para el renderizado multivista con algunas de las APIs gráficas. Se recomienda que los pases de renderizado multivista no dependan de ninguna de las características que GL_OVR_multiview declara como no soportadas. La única excepción son las salidas de etapa de sombreado distintas de gl_Position que dependen de gl_ViewIndex: en las que se puede confiar (incluso con OpenGL) porque QRhi nunca informa de que la vista múltiple está soportada sin que GL_OVR_multiview2 también esté presente.

Nota: El renderizado multivista no está soportado en combinación con teselación o sombreadores de geometría, aunque algunas implementaciones de algunas APIs gráficas lo permitan.

Esta función se introdujo en Qt 6.7.

Véase también multiViewCount().

void QRhiColorAttachment::setRenderBuffer(QRhiRenderBuffer *rb)

Establece el renderbuffer rb.

Nota: texture() y renderBuffer() no pueden ser ambos establecidos (ser no nulos al mismo tiempo).

Véase también renderBuffer().

void QRhiColorAttachment::setResolveLayer(int layer)

Establece la textura de resolución layer a utilizar.

Véase también resolveLayer().

void QRhiColorAttachment::setResolveLevel(int level)

Establece la textura de resolución mip level a utilizar.

Véase también resolveLevel().

void QRhiColorAttachment::setResolveTexture(QRhiTexture *tex)

Establece la textura de resolución tex.

tex se espera que sea una textura 2D o un array de texturas 2D. En cualquier caso, la resolución se dirige a un único nivel mip de una única capa (elemento de matriz) de tex. El nivel mip y la capa de matriz se especifican mediante resolveLevel() y resolveLayer().

Una excepción es multiview: cuando el color adjunto está asociado a una matriz de texturas y la multivista está activada, la textura de resolución debe ser también una matriz de texturas con elementos suficientes para todas las vistas. En este caso todos los elementos que corresponden a vistas se resuelven automáticamente; el comportamiento es similar al siguiente pseudocódigo:

for (i = 0; i < multiViewCount(); ++i)
    resolve texture's layer() + i into resolveTexture's resolveLayer() + i

Establecer una textura no multimuestreo para resolver una textura multimuestreo o renderbuffer automáticamente al final del pase de renderizado es a menudo preferible a trabajar con texturas multimuestreo (y no establecer una textura de resolución), porque evita la necesidad de escribir shaders de fragmentos dedicados que trabajen exclusivamente con texturas multimuestreo (sampler2DMS, texelFetch, etc.), y permite usar el mismo shader que se usaría si la textura del adjunto no fuera multimuestreo para empezar. Esto se consigue a expensas de un recurso adicional (la textura no multimuestra tex).

Véase también resolveTexture().

void QRhiColorAttachment::setTexture(QRhiTexture *tex)

Establece la textura tex.

Nota: texture() y renderBuffer() no pueden ser ambos establecidos (ser no nulos al mismo tiempo).

Véase también texture().

QRhiTexture *QRhiColorAttachment::texture() const

Devuelve la textura a la que hace referencia esta descripción de adjunto, o nullptr si no hay ninguna.

Véase también setTexture().

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