QOpenGLWidget Ejemplo de Renderizado Estereoscopico
Este ejemplo muestra como crear una aplicación mínima basada en QOpenGLWidget con soporte para renderizado estereoscópico.
Nota: El soporte para renderizado estereoscópico tiene ciertos requerimientos de hardware, tales como, una tarjeta gráfica con soporte estereoscópico, gafas 3D y monitores específicos.
Nota: Este ejemplo renderiza dos imágenes en dos buffers separados. Cuando se ven las imágenes a través de gafas 3D, dan un efecto holográfico 3D.

La imagen de arriba es la que se renderizará en la memoria intermedia izquierda.

La imagen de arriba es lo que se renderizará en el buffer derecho.
Establecer la bandera de superficie correcta
Para habilitar el renderizado estereoscópico necesitas establecer la bandera QSurfaceFormat::StereoBuffers globalmente. Hacerlo en el widget no es suficiente debido a cómo se maneja la bandera internamente. Lo más seguro es hacerlo en QSurfaceFormat::SetDefaultFormat antes de iniciar la aplicación.
QSurfaceFormat format; format.setDepthBufferSize(24); format.setStencilBufferSize(8); // Enable stereoscopic rendering support format.setStereo(true); QSurfaceFormat::setDefaultFormat(format);
Renderizando dos veces
Después de configurar QSurfaceFormat::StereoBuffers, paintGL() será llamada dos veces, una por cada buffer. En paintGL() puedes llamar a currentTargetBuffer() para consultar qué TargetBuffer está activo en ese momento.
En el siguiente snippet trasladamos ligeramente la matriz para no renderizar los vértices unos encima de otros. Este es un simple ejemplo para ver que si existe el soporte necesario, en tiempo de ejecución deberías ver dos objetos, uno a la izquierda y otro a la derecha.
// Slightly translate the model, so that there's a visible difference in each buffer. QMatrix4x4 modelview; if (currentTargetBuffer() == QOpenGLWidget::LeftBuffer) modelview.translate(-0.4f, 0.0f, 0.0f); else if (currentTargetBuffer() == QOpenGLWidget::RightBuffer) modelview.translate(0.4f, 0.0f, 0.0f);
© 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.