Qt 3D: Ejemplo QML Multi Viewport
Un ejemplo QML que demuestra el renderizado de un Scenegraph desde múltiples viewports.

Multi Viewport renderiza un Scenegraph desde el punto de vista de cuatro cámaras virtuales en los cuatro cuadrantes de una ventana. Esta es una configuración común para CAD 3D o herramientas de modelado o podría ser ajustado para ayudar con la representación de un espejo retrovisor en un juego de carreras de coches o una pantalla de la cámara de circuito cerrado de televisión.
Para más información, vea Un FrameGraph Multi Viewport.
Ejecutar el ejemplo
Para ejecutar el ejemplo desde Qt Creatorabra el modo Welcome y seleccione el ejemplo de Examples. Para más información, ver Qt Creator: Tutorial: Construir y ejecutar.
Creando Múltiples RenderViews
Usando las reglas definidas en Framegraph Rules, construimos cinco objetos RenderView a partir del FrameGraph:
Viewport { id: mainViewport normalizedRect: Qt.rect(0, 0, 1, 1) ClearBuffers { buffers: ClearBuffers.ColorDepthBuffer clearColor: Qt.rgba(0.6, 0.6, 0.6, 1.0) } Viewport { id: topLeftViewport normalizedRect: Qt.rect(0, 0, 0.5, 0.5) CameraSelector { id: cameraSelectorTopLeftViewport } } Viewport { id: topRightViewport normalizedRect: Qt.rect(0.5, 0, 0.5, 0.5) CameraSelector { id: cameraSelectorTopRightViewport } } Viewport { id: bottomLeftViewport normalizedRect: Qt.rect(0, 0.5, 0.5, 0.5) CameraSelector { id: cameraSelectorBottomLeftViewport } } Viewport { id: bottomRightViewport normalizedRect: Qt.rect(0.5, 0.5, 0.5, 0.5) CameraSelector { id: cameraSelectorBottomRightViewport } } }
El orden es importante. Si el nodo ClearBuffers fuera el último en lugar del primero, se produciría una pantalla negra por la sencilla razón de que todo se borraría justo después de haber sido renderizado tan cuidadosamente. Por una razón similar, no podría ser utilizado como la raíz del FrameGraph ya que eso daría lugar a una llamada para limpiar toda la pantalla para cada uno de nuestros viewports.
Aunque el orden de declaración del FrameGraph es importante, Qt 3D es capaz de procesar cada RenderView en paralelo ya que cada RenderView es independiente de los demás a los efectos de generar un conjunto de RenderCommands para ser enviados mientras el estado del RenderView está en efecto.
Qt 3D utiliza un enfoque basado en tareas para el paralelismo que naturalmente aumenta con el número de núcleos disponibles. Los RenderCommands para los RenderViews pueden ser generados en paralelo a través de muchos núcleos, y siempre y cuando tengamos cuidado de enviar los RenderViews en el orden correcto en el hilo de envío OpenGL dedicado, la escena resultante será renderizada correctamente.
© 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.