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
| Constante | Valor | Descripción |
|---|---|---|
QSGRendererInterface::Unknown | 0 | Se está utilizando una API de gráficos desconocida |
QSGRendererInterface::Software | 1 | Se está utilizando el renderizador 2D Qt Quick |
QSGRendererInterface::OpenVG | 2 | OpenVG a través de EGL |
QSGRendererInterface::OpenGL (since Qt 5.14) | 3 | OpenGL ES 2.0 o superior a través de una capa de abstracción de gráficos. |
QSGRendererInterface::Direct3D11 (since Qt 5.14) | 4 | Direct3D 11 a través de una capa de abstracción de gráficos. |
QSGRendererInterface::Direct3D12 (since Qt 6.6) | 8 | Direct3D 12 a través de una capa de abstracción gráfica. |
QSGRendererInterface::Vulkan (since Qt 5.14) | 5 | Vulkan 1.0 a través de una capa de abstracción gráfica. |
QSGRendererInterface::Metal (since Qt 5.14) | 6 | Metal a través de una capa de abstracción de gráficos. |
QSGRendererInterface::Null (since Qt 5.14) | 7 | Null (sin salida) a través de una capa de abstracción de gráficos. |
enum QSGRendererInterface::RenderMode
| Constante | Valor | Descripción |
|---|---|---|
QSGRendererInterface::RenderMode2D | 0 | Renderizado 2D normal |
QSGRendererInterface::RenderMode2DNoDepthBuffer | 1 | Renderizado 2D normal con la memoria de profundidad desactivada |
QSGRendererInterface::RenderMode3D | 2 | La escena se renderiza como parte de un gráfico 3D |
enum QSGRendererInterface::Resource
| Constante | Valor | Descripción |
|---|---|---|
QSGRendererInterface::DeviceResource | 0 | El 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::CommandQueueResource | 1 | El 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::CommandListResource | 2 | El 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::PainterResource | 3 | El recurso es un puntero al QPainter activo utilizado por el scenegraph, cuando se ejecuta con el software backend. |
QSGRendererInterface::RhiResource (since Qt 5.14) | 4 | El recurso es un puntero a la instancia QRhi utilizada por el scenegraph, en su caso. |
QSGRendererInterface::RhiSwapchainResource (since Qt 6.0) | 5 | El 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) | 6 | El 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) | 7 | El 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) | 8 | El 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) | 9 | El recurso es un puntero a QOpenGLContext utilizado por el scenegraph (en el hilo de renderizado), cuando sea aplicable. |
QSGRendererInterface::DeviceContextResource (since Qt 5.14) | 10 | El recurso es un puntero al contexto del dispositivo utilizado por el scenegraph, cuando proceda. Por ejemplo, ID3D11DeviceContext *. |
QSGRendererInterface::CommandEncoderResource (since Qt 5.14) | 11 | El 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) | 12 | El recurso es un puntero a QVulkanInstance utilizado por el scenegraph, cuando procede. |
QSGRendererInterface::RenderPassResource (since Qt 5.14) | 13 | El 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) | 14 | El 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) | 15 | El 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) | 16 | El 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
| Constante | Valor | Descripción |
|---|---|---|
QSGRendererInterface::RuntimeCompilation | 0x01 | Se soporta la compilación en tiempo de ejecución del código fuente del shader |
QSGRendererInterface::OfflineCompilation | 0x02 | Soporta 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
| Constante | Valor | Descripción |
|---|---|---|
QSGRendererInterface::ShaderSourceString | 0x01 | La fuente del shader puede proporcionarse como una cadena en las propiedades correspondientes de ShaderEffect |
QSGRendererInterface::ShaderSourceFile | 0x02 | Se admiten archivos locales o de recursos que contengan el código fuente del sombreador |
QSGRendererInterface::ShaderByteCode | 0x04 | Se 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
| Constante | Valor | Descripción |
|---|---|---|
QSGRendererInterface::UnknownShadingLanguage | 0 | Aún no se conoce debido a que no hay ventana y scenegraph asociados |
QSGRendererInterface::GLSL | 1 | GLSL o GLSL ES |
QSGRendererInterface::HLSL | 2 | HLSL |
QSGRendererInterface::RhiShader (since Qt 5.14) | 3 | Consume 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.