En esta página

QSGRendererInterface Class

Una interfaz que proporciona acceso a algunos de los elementos internos específicos de la API gráfica del scenegraph. Más...

Cabecera: #include <QSGRendererInterface>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick

Tipos Públicos

enum GraphicsApi { Unknown, Software, OpenVG, OpenGL, Direct3D11, …, Null }
enum RenderMode { RenderMode2D, RenderMode2DNoDepthBuffer, RenderMode3D }
enum Resource { DeviceResource, CommandQueueResource, CommandListResource, PainterResource, RhiResource, …, GraphicsQueueIndexResource }
enum ShaderCompilationType { RuntimeCompilation, OfflineCompilation }
flags ShaderCompilationTypes
enum ShaderSourceType { ShaderSourceString, ShaderSourceFile, ShaderByteCode }
flags ShaderSourceTypes
enum ShaderType { UnknownShadingLanguage, GLSL, HLSL, RhiShader }

Funciones públicas

virtual void *getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const
virtual void *getResource(QQuickWindow *window, const char *resource) const
virtual QSGRendererInterface::GraphicsApi graphicsApi() const = 0
virtual QSGRendererInterface::ShaderCompilationTypes shaderCompilationType() const = 0
virtual QSGRendererInterface::ShaderSourceTypes shaderSourceType() const = 0
virtual QSGRendererInterface::ShaderType shaderType() const = 0

Miembros públicos estáticos

bool isApiRhiBased(QSGRendererInterface::GraphicsApi api)

Descripción Detallada

Las interfaces del renderizador permiten acceder a funciones específicas de la API de gráficos en la escena gráfica. Estas funciones internas no suelen estar expuestas. Sin embargo, cuando se integra el renderizado personalizado a través de QSGRenderNode, por ejemplo, puede ser necesario consultar ciertos valores, por ejemplo, el dispositivo gráfico (por ejemplo, el dispositivo Direct3D o Vulkan) que es utilizado por el scenegraph.

Las funciones de QSGRendererInterface tienen una disponibilidad variable. Las consultas a la API y al lenguaje, como graphicsApi() o shaderType() están siempre disponibles, lo que significa que basta con construir QQuickWindow o QQuickView, y la API gráfica o el lenguaje de sombreado en uso puede consultarse justo después a través de QQuickWindow::rendererInterface(). Esto garantiza que utilidades como el tipo QML GraphicsInfo puedan informar de los valores correctos lo antes posible, sin que los valores condicionales de las propiedades -que dependen, por ejemplo, de shaderType() - se evalúen a valores inesperados.

Accesores específicos del motor, como getResource(), sin embargo, sólo están disponibles después de que el scenegraph se inicializa. Además, puede haber limitaciones específicas del backend sobre cuándo se puede llamar a estas funciones. La única forma que garantiza el éxito es llamarlas cuando el renderizado de un nodo (es decir, la preparación de la lista de comandos para el siguiente fotograma) está activo. En la práctica, esto suele significar QSGRenderNode::render().

Documentación de los tipos de miembros

enum QSGRendererInterface::GraphicsApi

ConstanteValorDescripción
QSGRendererInterface::Unknown0Se está utilizando una API de gráficos desconocida
QSGRendererInterface::Software1Se está utilizando el renderizador 2D Qt Quick
QSGRendererInterface::OpenVG2OpenVG a través de EGL
QSGRendererInterface::OpenGL (since Qt 5.14)3OpenGL ES 2.0 o superior a través de una capa de abstracción de gráficos.
QSGRendererInterface::Direct3D11 (since Qt 5.14)4Direct3D 11 a través de una capa de abstracción de gráficos.
QSGRendererInterface::Direct3D12 (since Qt 6.6)8Direct3D 12 a través de una capa de abstracción gráfica.
QSGRendererInterface::Vulkan (since Qt 5.14)5Vulkan 1.0 a través de una capa de abstracción gráfica.
QSGRendererInterface::Metal (since Qt 5.14)6Metal a través de una capa de abstracción de gráficos.
QSGRendererInterface::Null (since Qt 5.14)7Null (sin salida) a través de una capa de abstracción de gráficos.

enum QSGRendererInterface::RenderMode

ConstanteValorDescripción
QSGRendererInterface::RenderMode2D0Renderizado 2D normal
QSGRendererInterface::RenderMode2DNoDepthBuffer1Renderizado 2D normal con la memoria de profundidad desactivada
QSGRendererInterface::RenderMode3D2La escena se renderiza como parte de un gráfico 3D

enum QSGRendererInterface::Resource

ConstanteValorDescripción
QSGRendererInterface::DeviceResource0El recurso es un puntero al dispositivo gráfico, cuando sea aplicable. Por ejemplo, un VkDevice *, MTLDevice * o ID3D11Device *. Tenga en cuenta que con Vulkan el valor devuelto es un puntero al VkDevice, no el propio handle. Esto se debe a que los manejadores Vulkan pueden no ser punteros, y pueden usar un tamaño diferente al tamaño de puntero de la arquitectura, por lo que simplemente hacer un casting a/desde void * es incorrecto.
QSGRendererInterface::CommandQueueResource1El recurso es un puntero a la cola de comandos gráficos utilizada por el scenegraph, cuando sea aplicable. Por ejemplo, VkQueue * o MTLCommandQueue *. Ten en cuenta que con Vulkan el valor devuelto es un puntero a la VkQueue, no el propio handle.
QSGRendererInterface::CommandListResource2El recurso es un puntero a la lista de comandos o al búfer utilizado por el scenegraph, cuando corresponda. Por ejemplo, un VkCommandBuffer * o MTLCommandBuffer *. Este objeto tiene una validez limitada, y sólo es válido mientras el gráfico de escena está preparando el siguiente fotograma. Ten en cuenta que con Vulkan el valor devuelto es un puntero al VkCommandBuffer, no el propio handle.
QSGRendererInterface::PainterResource3El recurso es un puntero al QPainter activo utilizado por el scenegraph, cuando se ejecuta con el software backend.
QSGRendererInterface::RhiResource (since Qt 5.14)4El recurso es un puntero a la instancia QRhi utilizada por el scenegraph, en su caso.
QSGRendererInterface::RhiSwapchainResource (since Qt 6.0)5El recurso es un puntero a una instancia de QRhiSwapchain asociada a la ventana. El valor es nulo cuando la ventana se utiliza en combinación con QQuickRenderControl.
QSGRendererInterface::RhiRedirectCommandBuffer (since Qt 6.0)6El recurso es un puntero a una instancia de QRhiCommandBuffer asociada a la ventana y a su QQuickRenderControl. El valor es nulo cuando la ventana no está asociada a QQuickRenderControl.
QSGRendererInterface::RhiRedirectRenderTarget (since Qt 6.0)7El recurso es un puntero a una instancia de QRhiTextureRenderTarget asociada a la ventana y a su QQuickRenderControl. El valor es nulo cuando la ventana no está asociada a QQuickRenderControl. Tenga en cuenta que el valor siempre refleja el objetivo de renderizado de textura principal y no depende de la escena Qt Quick, lo que significa que no tiene en cuenta ningún pase de renderizado de objetivo de textura adicional generado por las capas ShaderEffect o QQuickItem.
QSGRendererInterface::PhysicalDeviceResource (since Qt 5.14)8El recurso es un puntero al objeto dispositivo físico utilizado por la escena, si procede. Por ejemplo, un VkPhysicalDevice *. Tenga en cuenta que con Vulkan el valor devuelto es un puntero al VkPhysicalDevice, no el propio handle.
QSGRendererInterface::OpenGLContextResource (since Qt 5.14)9El recurso es un puntero a QOpenGLContext utilizado por el scenegraph (en el hilo de renderizado), cuando sea aplicable.
QSGRendererInterface::DeviceContextResource (since Qt 5.14)10El recurso es un puntero al contexto del dispositivo utilizado por el scenegraph, cuando proceda. Por ejemplo, ID3D11DeviceContext *.
QSGRendererInterface::CommandEncoderResource (since Qt 5.14)11El recurso es un puntero al objeto codificador de comandos de renderización actualmente activo utilizado por el scenegraph, cuando proceda. Por ejemplo, un MTLRenderCommandEncoder *. Este objeto tiene una validez limitada, y sólo es válido mientras el gráfico de escena está grabando un pase de renderizado para el siguiente fotograma.
QSGRendererInterface::VulkanInstanceResource (since Qt 5.14)12El recurso es un puntero a QVulkanInstance utilizado por el scenegraph, cuando procede.
QSGRendererInterface::RenderPassResource (since Qt 5.14)13El recurso es un puntero al pase de renderizado principal utilizado por el scenegraph, que describe los adjuntos de color y profundidad/estécil y cómo se utilizan. Por ejemplo, un VkRenderPass *. Tenga en cuenta que el valor siempre refleja el objetivo de renderizado principal (ya sea la ventana en pantalla o la textura a la que redirige QQuickRenderControl ) y no depende de la escena Qt Quick, lo que significa que no tiene en cuenta ningún pase de renderizado adicional de objetivo de textura generado por las capas ShaderEffect o QQuickItem.
QSGRendererInterface::RedirectPaintDevice (since Qt 6.4)14El recurso es un puntero a la instancia QPaintDevice que está asociada a la ventana y a su QQuickRenderControl. El valor es nulo cuando la ventana no está asociada a QQuickRenderControl.
QSGRendererInterface::GraphicsQueueFamilyIndexResource (since Qt 6.6)15El recurso es un puntero al índice de la familia de colas gráficas utilizado por el scenegraph, cuando proceda. Con Vulkan, se trata de un puntero a un valor de índice uint32_t.
QSGRendererInterface::GraphicsQueueIndexResource (since Qt 6.6)16El recurso es un puntero al índice de cola de gráficos (uint32_t) utilizado por el scenegraph, cuando proceda. Con Vulkan, se trata de un puntero a un valor de índice uint32_t, que en la práctica es el índice de la VkQueue notificado para CommandQueueResource.

enum QSGRendererInterface::ShaderCompilationType
flags QSGRendererInterface::ShaderCompilationTypes

ConstanteValorDescripción
QSGRendererInterface::RuntimeCompilation0x01Se soporta la compilación en tiempo de ejecución del código fuente del shader
QSGRendererInterface::OfflineCompilation0x02Soporta bytecode precompilado

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

enum QSGRendererInterface::ShaderSourceType
flags QSGRendererInterface::ShaderSourceTypes

ConstanteValorDescripción
QSGRendererInterface::ShaderSourceString0x01La fuente del shader puede proporcionarse como una cadena en las propiedades correspondientes de ShaderEffect
QSGRendererInterface::ShaderSourceFile0x02Se admiten archivos locales o de recursos que contengan el código fuente del sombreador
QSGRendererInterface::ShaderByteCode0x04Se admiten archivos locales o de recursos que contengan bytecode de shaders

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

enum QSGRendererInterface::ShaderType

ConstanteValorDescripción
QSGRendererInterface::UnknownShadingLanguage0Aún no se conoce debido a que no hay ventana y scenegraph asociados
QSGRendererInterface::GLSL1GLSL o GLSL ES
QSGRendererInterface::HLSL2HLSL
QSGRendererInterface::RhiShader (since Qt 5.14)3Consume instancias de QShader que contienen variantes de shaders para múltiples lenguajes de destino y formatos intermedios.

Documentación de las funciones miembro

[virtual] void *QSGRendererInterface::getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const

Consulta un gráfico resource en window. Devuelve null cuando el recurso en cuestión no es compatible o no está disponible.

Si la consulta tiene éxito, el puntero devuelto es un puntero directo a una interfaz, o un puntero a un manejador opaco al que hay que hacer referencia primero (por ejemplo, VkDevice dev = *static_cast<VkDevice *>(result)). Esto último es necesario ya que dichos manejadores pueden tener tamaños diferentes a los de un puntero.

Nota: La propiedad del puntero devuelto nunca se transfiere al llamante.

Nota: Esta función sólo debe ser llamada en el hilo de renderizado.

[virtual] void *QSGRendererInterface::getResource(QQuickWindow *window, const char *resource) const

Consulta un recurso gráfico. resource es una clave específica de backend. Esto permite soportar cualquier recurso futuro que no esté listado en el enum Resource.

Nota: La propiedad del puntero devuelto nunca se transfiere al llamante.

Nota: Esta función sólo debe ejecutarse en el subproceso de renderizado.

[pure virtual] QSGRendererInterface::GraphicsApi QSGRendererInterface::graphicsApi() const

Devuelve la API de gráficos que está en uso por el Qt Quick scenegraph.

Nota: Esta función puede ser llamada en cualquier hilo.

[static] bool QSGRendererInterface::isApiRhiBased(QSGRendererInterface::GraphicsApi api)

Devuelve true si api se basa en una capa de abstracción gráfica (QRhi) en lugar de llamar directamente a la API gráfica nativa.

Nota: Esta función puede ser llamada en cualquier hilo.

[pure virtual] QSGRendererInterface::ShaderCompilationTypes QSGRendererInterface::shaderCompilationType() const

Devuelve una máscara de bits de los enfoques de compilación de shaders soportados por el backend Qt Quick que la aplicación está utilizando.

Nota: Esta función puede ser llamada en cualquier thread.

Véase también QtQuick::GraphicsInfo.

[pure virtual] QSGRendererInterface::ShaderSourceTypes QSGRendererInterface::shaderSourceType() const

Devuelve una máscara de bits de las formas admitidas de proporcionar fuentes de sombreado en elementos de ShaderEffect.

Nota: Esta función puede ser llamada en cualquier thread.

Véase también QtQuick::GraphicsInfo.

[pure virtual] QSGRendererInterface::ShaderType QSGRendererInterface::shaderType() const

Devuelve el lenguaje de sombreado soportado por el backend Qt Quick que la aplicación está utilizando.

Nota: Esta función puede ser llamada en cualquier hilo.

Véase también QtQuick::GraphicsInfo.

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