En esta página

Adaptaciones de Scene Graph

Adaptaciones de gráficos de escena en Qt Quick

En Qt 5.0, Qt Quick siempre dependía de OpenGL (OpenGL ES 2.0 u OpenGL 2.0) para analizar el gráfico de escena y renderizar los resultados en un destino de renderizado.

Desde Qt 5.8 en adelante, Qt Quick también soporta renderizado en software, y con OpenVG. Esto se consigue mediante adaptaciones adicionales del grafo de escena, ya sea en forma de plugins (openvg) o integradas en la librería Qt Quick (software). La adaptación por defecto sigue dependiendo directamente de OpenGL.

A partir de Qt 5.14, la adaptación por defecto gana la opción de renderizar a través de una capa de abstracción gráfica, la Qt Rendering Hardware Interface (RHI), proporcionada por el módulo Qt GUI de Qt. Cuando está activada, no se realizan llamadas directas a OpenGL. En su lugar, el gráfico de la escena se renderiza utilizando las API proporcionadas por la capa de abstracción, que luego se traducen en llamadas OpenGL, Vulkan, Metal o Direct 3D. El manejo de los sombreadores también se unifica escribiendo el código de sombreado una vez, compilándolo a SPIR-V y traduciéndolo después al lenguaje apropiado para las distintas API de gráficos.

A partir de Qt 6.0, el modelo de renderizado basado en RHI es el predeterminado, y no hay opción de volver a utilizar directamente OpenGL.

Cambiar entre adaptaciones en su aplicación

A diferencia de software, el renderizador basado en RHI no es una adaptación adicional, y siempre está incorporado. A partir de Qt 6.0 está siempre activado. En plataformas donde hay disponibles múltiples APIs gráficas, el scenegraph hace una elección específica de la plataforma. Si esto no se desea, las aplicaciones pueden forzar una API gráfica específica estableciendo la variable de entorno QSG_RHI_BACKEND o mediante QQuickWindow::setGraphicsApi() en combinación con QSGRendererInterface::GraphicsApi.

El cambio a una adaptación diferente puede lograrse de dos maneras:

  • Utilizar una variable de entorno - Establezca la variable de entorno QT_QUICK_BACKEND o la heredada QMLSCENE_DEVICE antes de iniciar las aplicaciones.
  • Utilizar una API de C++ - Llamar a QQuickWindow::setSceneGraphBackend() al principio de la función main() de la aplicación.

Se admiten los siguientes backends:

Para saber qué backend se está utilizando, puedes activar el registro de información básica del gráfico de escena mediante la variable de entorno QSG_INFO o la categoría de registro qt.scenegraph.general. Esto resulta en cierta información que se imprime en la salida de depuración, durante el inicio de la aplicación.

Nota: En las versiones de Qt con OpenGL y Vulkan desactivados, la adaptación por defecto es software. Sin embargo, esto no se aplica a Windows o macOS, ya que estas plataformas siempre tienen activado el soporte Direct 3D o Metal, respectivamente.

Nota: Normalmente, las adaptaciones distintas de la predeterminada vienen con una serie de limitaciones, ya que es poco probable que ofrezcan un conjunto de características 100% compatible con OpenGL. Sin embargo, estas adaptaciones pueden proporcionar sus propias ventajas específicas en determinadas áreas. Para obtener más información sobre las distintas adaptaciones, consulta las secciones siguientes.

Adaptación por defecto

Cuando se utiliza OpenGL directamente, la adaptación por defecto es capaz de proporcionar el conjunto completo de características de Qt Quick 2. Para obtener más información, consulte Adaptación predeterminada.

Adaptación de software

La adaptación de software es un renderizador alternativo para Qt Quick 2 que utiliza el motor de pintura de trama para renderizar el contenido del gráfico de escena. Para más detalles, consulte Adaptación de software.

OpenVG

La adaptación OpenVG es un renderizador alternativo para Qt Quick 2 que renderiza el contenido del gráfico de escena utilizando comandos OpenVG para proporcionar gráficos 2D vectoriales y rasterizados acelerados por hardware. Para más información, consulte Adaptación OpenVG.

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