En esta página

QRhiResource Class

Clase base para clases que encapsulan objetos de recursos nativos. 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
Heredado por:
12 tipos

QRhiBuffer, QRhiCommandBuffer, QRhiComputePipeline, QRhiGraphicsPipeline, QRhiRenderBuffer, QRhiRenderPassDescriptor, QRhiRenderTarget, QRhiSampler, QRhiShaderResourceBindings, QRhiShadingRateMap, QRhiSwapChain, y QRhiTexture

Tipos públicos

enum Type { Buffer, Texture, Sampler, RenderBuffer, RenderPassDescriptor, …, ShadingRateMap }

Funciones Públicas

virtual ~QRhiResource()
void deleteLater()
virtual void destroy() = 0
quint64 globalResourceId() const
QByteArray name() const
virtual QRhiResource::Type resourceType() const = 0
QRhi *rhi() const
void setName(const QByteArray &name)

Descripción detallada

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

Documentación de tipos de miembros

enum QRhiResource::Type

Especifica el tipo de recurso.

ConstanteValor
QRhiResource::Buffer0
QRhiResource::Texture1
QRhiResource::Sampler2
QRhiResource::RenderBuffer3
QRhiResource::RenderPassDescriptor4
QRhiResource::SwapChainRenderTarget5
QRhiResource::TextureRenderTarget6
QRhiResource::ShaderResourceBindings7
QRhiResource::GraphicsPipeline8
QRhiResource::SwapChain9
QRhiResource::ComputePipeline10
QRhiResource::CommandBuffer11
QRhiResource::ShadingRateMap12

Documentación de la función miembro

[virtual noexcept] QRhiResource::~QRhiResource()

Destructor.

Libera (o solicita la liberación diferida de) los recursos gráficos nativos subyacentes, si los hubiera.

Nota: Los recursos referenciados por comandos para el fotograma actual no deben ser liberados hasta que el fotograma sea enviado por QRhi::endFrame().

Véase también destroy().

void QRhiResource::deleteLater()

Cuando se llama sin que se esté grabando un fotograma, esta función equivale a borrar el objeto. Sin embargo, entre un QRhi::beginFrame() y un QRhi::endFrame() el comportamiento es diferente: el QRhiResource no será destruido hasta que la trama sea enviada a través de QRhi::endFrame(), satisfaciendo así el requisito QRhi de no alterar QRhiResource objetos que son referenciados por la trama que está siendo grabada.

Si el QRhi que creó este objeto ya ha sido destruido, el objeto será borrado inmediatamente.

El uso de deleteLater() puede ser útil en muchos casos, y complementa la garantía de bajo nivel (que los objetos gráficos nativos subyacentes nunca se destruyen hasta que es seguro hacerlo y se sabe con certeza que no son utilizados por la GPU en un fotograma aún en vuelo), ofreciendo una forma de asegurarse de que las instancias de objetos C++ (de QRhiBuffer, QRhiTexture, etc.) también siguen siendo válidas hasta el final del fotograma actual.

El siguiente ejemplo muestra una forma conveniente de crear un búfer desechable que sólo se utiliza en un fotograma y se libera automáticamente en endFrame(). (En lo que respecta a los búferes nativos subyacentes, se aplica la garantía habitual: el backend QRhi aplaza su liberación hasta que se garantice que el fotograma en el que la GPU accede al búfer ha finalizado).

rhi->beginFrame(swapchain);
QRhiBuffer *buf = rhi->newBuffer(QRhiBuffer::Immutable, QRhiBuffer::VertexBuffer, 256);
buf->deleteLater(); // !
u = rhi->nextResourceUpdateBatch();
u->uploadStaticBuffer(buf, data);
// ... draw with buf
rhi->endFrame();

Véase también destroy().

[pure virtual] void QRhiResource::destroy()

Libera (o solicita la liberación diferida de) los recursos gráficos nativos subyacentes. Se puede invocar varias veces, pero las invocaciones posteriores no serán necesarias.

Una vez llamada a destroy(), la instancia QRhiResource puede ser reutilizada, llamando de nuevo a create(). Esto resultará en la creación de nuevos recursos gráficos nativos debajo.

Nota: Los recursos referenciados por comandos para el frame actual no deben ser liberados hasta que el frame sea enviado por QRhi::endFrame().

El destructor QRhiResource también realiza la misma tarea, por lo que no es necesario llamar a esta función antes de borrar un QRhiResource.

Véase también deleteLater().

quint64 QRhiResource::globalResourceId() const

Devuelve el identificador único global de este QRhiResource.

El código de usuario raramente necesita tratar con el valor directamente. Se utiliza internamente con fines de seguimiento y contabilidad.

QByteArray QRhiResource::name() const

Devuelve el nombre del objeto establecido actualmente. Por defecto, el nombre está vacío.

Véase también setName().

[pure virtual] QRhiResource::Type QRhiResource::resourceType() const

Devuelve el tipo del recurso.

QRhi *QRhiResource::rhi() const

Devuelve el QRhi que creó este recurso.

Si el QRhi que creó este objeto ya está destruido, el resultado es nullptr.

void QRhiResource::setName(const QByteArray &name)

Establece un name para el objeto.

Esto permite obtener nombres descriptivos para los recursos gráficos nativos visibles en herramientas de depuración de gráficos, como RenderDoc y XCode.

Cuando se trata de nombrar objetos nativos transmitiendo el nombre a través de la API gráfica apropiada, ten en cuenta que el nombre se ignora cuando QRhi::DebugMarkers no está soportado, y puede, dependiendo del backend, también ser ignorado cuando QRhi::EnableDebugMarkers no está establecido.

Nota: El nombre puede ser ignorado para objetos que no sean buffers, renderbuffers y texturas, dependiendo del backend.

Nota: El nombre puede ser modificado. Para recursos con ranuras, como un QRhiBuffer respaldado por múltiples buffers nativos, QRhi añadirá un sufijo para hacer que los buffers nativos subyacentes sean fácilmente distinguibles unos de otros.

Véase también name().

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