tagspace tag files and windows qt opengl deployment qt5

tag - Implementación de Qt5 en Windows sin aceleración de hardware



tag folders (2)

En Windows, opengl32.dll es el controlador predeterminado de OpenGL. Implementa OpenGL 1.1 (versión realmente antigua). ANGLE tiene una línea base de OpenGL ES 2.0 y necesita DirectX 9/11 instalado para mapear las llamadas.

Por lo tanto, si tiene una tarjeta de video que no tiene instalado un controlador OpenGL, un controlador OpenGL de menos de 2.0 y / o DirectX 9/11 no instalado, su aplicación no funcionará.

En lo que respecta a la virtualización y la aceleración 3D, vale la pena leer:

Además, si ejecuta un entorno de Windows de varios monitores en VirtualBox, la aceleración 3D se desactivará.

Qt5 puede usar el controlador OpenGL o el controlador DirectX usando ANGLE. Como no podemos depender de un controlador OpenGL instalado, necesitamos usar el motor de fondo ANGLE. Desafortunadamente, esto no resuelve todos los problemas de implementación, especialmente en las máquinas virtuales de Windows sin aceleración de hardware. En estos sistemas, recibimos un mensaje de error que indica que la creación de un contexto OpenGL falló.

Captura de pantalla: no se pudo crear el contexto de OpenGL para el formato QSurfaceFormat

Estamos implementando todas las bibliotecas necesarias (libEGL.dll libGLESv2.dll libeay32.dll msvcp110.dll msvcr110.dll d3dcompiler_46.dll) pero seguimos recibiendo este mensaje de error.

¿Cómo despliega una aplicación QML que necesita ejecutarse en máquinas de usuario final sin controlador OpenGL y en máquinas (virtuales) sin Aceleración Direct3D?

Hay una página en el wiki de Qt que menciona este problema , pero eso no es muy útil para resolverlo.

Actualización para Qt 5.4.0:

Mis hallazgos hasta ahora son:

  • Configurando QT_ANGLE_PLATFORM = warp -> crea una ventana sin contenido.
  • Configurando QT_ANGLE_PLATFORM = d3d9 -> el mismo diálogo de error, como se esperaba.
  • Configurando QT_ANGLE_PLATFORM = d3d11 -> el mismo cuadro de diálogo de error, como se esperaba.
  • Configurando QT_OPENGL = desktop -> igual que QT_ANGLE_PLATFORM = warp.
  • Configurando QT_OPENGL = ángulo -> el mismo cuadro de diálogo de error, como se esperaba.
  • Configuración de QT_OPENGL = software + opengl32sw.dll (mesa para windows) -> impredecible: puede ejecutarse, puede bloquearse, puede mostrar el cuadro de diálogo de error.

Actualización para Qt Quick 2D Renderer

Aunque, Mesa parece ser una solución parcial, la configuración parece ser muy frecuente en Qt 5.4.0.

Otra alternativa podría ser el Qt Quick 2D Renderer, pero desafortunadamente esto también falla.

  • Copiando softwarecontext.dll en / scenegraph + Configurando QMLSCENE_DEVICE = softwarecontext -> crash

Actualización después de alguna experiencia de usuario:

Ángulo
  • Tiene algunos errores de renderizado en algunos sistemas
  • No funciona de manera confiable en todos los sistemas
Ángulo con deformación
  • No fiable
Desktop OpenGL
  • El valor predeterminado implementa OpenGL 1.1, que es demasiado antiguo.
  • No es confiable, incluso si la versión de OpenGL está bien.
  • Tiene errores de renderizado, si es utilizado por Qt
QtQuick2dRenderer
  • Tiene algunos problemas principales de render
  • Bloqueos, congelaciones
  • Funciona en sistemas sin aceleración HW
Mesa OpenGL Backend
  • Parece ser bastante confiable en este momento
  • bastante lento en general, muy lento en algunos sistemas.
  • Pesado peso de despliegue

Conclusión: todavía no hay una solución real para estos sistemas

Actualización para Qt 5.5

Anno 2015: las unidades de gráficos rotos todavía están rotas.

Mi conclusión por el momento es:

  1. Use QtQuick2dRenderer si es posible.
  2. Use el backend de Mesa de lo contrario.
  3. Omitir ángulo, saltar Escritorio OpenGL, omitir Warp.

QT 5 tiene un gran problema de compatibilidad con OpenGL en algunas configuraciones de hardware. La combinación del controlador Intel HD3000 y la tarjeta Nvidia / ATI no funcionará en Windows 10. https://bugreports.qt.io/browse/QTBUG-42240

Intel deja de admitir esta tarjeta, pero sus controladores tienen errores que provocan fallas.

No puede confiar en OpenGL de hardware si desea admitir clientes con HD3000.