En esta página

QRhiRenderBuffer Class

Recurso Renderbuffer. 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: QRhiResource

Tipos Públicos

struct NativeRenderBuffer
enum Flag { UsedWithSwapChainOnly }
flags Flags
enum Type { DepthStencil, Color }

Funciones Públicas

virtual bool create() = 0
virtual bool createFrom(QRhiRenderBuffer::NativeRenderBuffer src)
QRhiRenderBuffer::Flags flags() const
QSize pixelSize() const
int sampleCount() const
void setFlags(QRhiRenderBuffer::Flags f)
void setPixelSize(const QSize &sz)
void setSampleCount(int s)
void setType(QRhiRenderBuffer::Type t)
QRhiRenderBuffer::Type type() const

Funciones Públicas Reimplementadas

virtual QRhiResource::Type resourceType() const override

Descripción Detallada

Los Renderbuffers no pueden ser muestreados o leídos pero tienen algunos beneficios sobre las texturas en algunos casos:

Un DepthStencil renderbuffer puede ser asignado perezosamente y ser respaldado por memoria transitoria con algunas APIs. En algunas plataformas, esto puede significar que el búfer de profundidad/esténcil no utilice ningún tipo de respaldo físico.

Color Los renderbuffers son útiles ya que QRhi::MultisampleRenderBuffer puede ser soportado incluso cuando QRhi::MultisampleTexture no lo es.

La forma en que el renderbuffer es implementado por un backend no está expuesta a las aplicaciones. En algunos casos puede estar respaldado por texturas ordinarias, mientras que en otros puede haber un tipo diferente de recurso nativo utilizado.

Los buffers de renderizado que se utilizan (y sólo se utilizan) como buffers de profundidad en combinación con los buffers de color de QRhiSwapChain deben tener la bandera UsedWithSwapChainOnly activada. Esto tiene un doble propósito: tales buffers, dependiendo del backend y de las APIs subyacentes, son más eficientes, y QRhi proporciona un comportamiento automático de dimensionamiento para ajustarse a los buffers de color, lo que significa que llamar a setPixelSize() y create() no es necesario para tales renderbuffers.

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

Documentación de tipos de miembros

enum QRhiRenderBuffer::Flag
flags QRhiRenderBuffer::Flags

Valores de bandera para flags() y setFlags()

ConstanteValorDescripción
QRhiRenderBuffer::UsedWithSwapChainOnly1 << 0Para los renderbuffers DepthStencil indica que el renderbuffer sólo se utiliza en combinación con un QRhiSwapChain, y nunca de otra forma. Esto proporciona un dimensionamiento y una reconstrucción de recursos automáticos, por lo que no es necesario llamar a setPixelSize() o create() cuando esta bandera está activada. El valor de esta bandera también puede desencadenar un comportamiento específico del backend, por ejemplo con OpenGL, donde se utiliza una API de interfaz de sistema de ventanas separada (EGL, GLX, etc.), la bandera es especialmente importante ya que evita la creación de cualquier recurso de búfer de renderizado real, puesto que ya existe un búfer de profundidad/esténcil proporcionado por el sistema de ventanas, tal y como se solicita en QSurfaceFormat.

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

enum QRhiRenderBuffer::Type

Especifica el tipo de renderbuffer

ConstanteValorDescripción
QRhiRenderBuffer::DepthStencil0Profundidad/esténcil combinados
QRhiRenderBuffer::Color1Color

Documentación de la función miembro

[pure virtual] bool QRhiRenderBuffer::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.

Devuelve true en caso de éxito, false en caso de fallo de la operación gráfica. Independientemente del valor de retorno, la llamada a destroy() es siempre segura.

[virtual] bool QRhiRenderBuffer::createFrom(QRhiRenderBuffer::NativeRenderBuffer src)

Similar a create() excepto en que no se crean nuevos objetos nativos de renderbuffer. En su lugar, se utiliza el objeto renderbuffer nativo especificado por src.

Esto permite importar un objeto renderbuffer existente (que debe pertenecer al mismo dispositivo o contexto de compartición, dependiendo de la API gráfica) desde un motor gráfico externo.

Nota: actualmente sólo es aplicable a OpenGL. Esta función existe únicamente para permitir la importación de un objeto renderbuffer que está vinculado a algún objeto especial externo, como un EGLImageKHR. Una vez que la aplicación ha realizado la llamada glEGLImageTargetRenderbufferStorageOES, el objeto renderbuffer puede pasarse a esta función para crear un QRhiRenderBuffer envolvente, que a su vez puede pasarse como un color adjunto a un QRhiTextureRenderTarget para permitir el renderizado a la EGLImage.

Nota: pixelSize(), sampleCount(), y flags() deben ser configurados correctamente. Pasar tamaños incorrectos y otros valores a QRhi::newRenderBuffer() y luego seguirlo con un createFrom() esperando que el objeto renderbuffer nativo por sí solo sea suficiente para deducir tales valores es incorrecto y conducirá a problemas.

Nota: QRhiRenderBuffer no toma posesión del objeto nativo, y destroy() no liberará dicho objeto.

Nota: Esta función sólo se implementa cuando la función QRhi::RenderBufferImport se reporta como supported. De lo contrario, la función no hace nada y el valor de retorno es false.

Devuelve true cuando tiene éxito, false cuando no es compatible.

QRhiRenderBuffer::Flags QRhiRenderBuffer::flags() const

Devuelve las banderas.

Véase también setFlags().

QSize QRhiRenderBuffer::pixelSize() const

Devuelve el tamaño del píxel.

Véase también setPixelSize().

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

Reimplementa: QRhiResource::resourceType() const.

Devuelve el tipo de recurso.

int QRhiRenderBuffer::sampleCount() const

Devuelve el número de muestras. 1 significa que no hay antialiasing multimuestra.

Véase también setSampleCount().

void QRhiRenderBuffer::setFlags(QRhiRenderBuffer::Flags f)

Establece las banderas en f.

Véase también flags().

void QRhiRenderBuffer::setPixelSize(const QSize &sz)

Establece el tamaño (en píxeles) en sz.

Véase también pixelSize().

void QRhiRenderBuffer::setSampleCount(int s)

Establece el recuento de muestras en s.

Véase también sampleCount().

void QRhiRenderBuffer::setType(QRhiRenderBuffer::Type t)

Establece el tipo a t.

Véase también type().

QRhiRenderBuffer::Type QRhiRenderBuffer::type() const

Devuelve el tipo de renderbuffer.

Véase también setType().

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