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()
| Constante | Valor | Descripción |
|---|---|---|
QRhiRenderBuffer::UsedWithSwapChainOnly | 1 << 0 | Para 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
| Constante | Valor | Descripción |
|---|---|---|
QRhiRenderBuffer::DepthStencil | 0 | Profundidad/esténcil combinados |
QRhiRenderBuffer::Color | 1 | Color |
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.