2013-12-11 7 views
6

Ich habe "Qt 5.2 mingw (opengl und x86)" Version heruntergeladen und installiert. Wenn ich Qt-Projekte mit dieser Version von Qt starte, gibt es kein Problem. Aber wenn ich eine Qt Schnell Anwendung ausführen, das Programm abstürzen und folgende Log-Meldungen im Debug:Fehler: QOpenGLShader: konnte Shader nicht erstellen - beim Kompilieren von QtQuick-Anwendungen mit Qt5.2 Mingw OpenGL

getProcAddress: Unable to resolve 'glGenRenderbuffers' 
getProcAddress: Unable to resolve 'glGenRenderbuffersOES' 
getProcAddress: Unable to resolve 'glGenRenderbuffersARB' 
getProcAddress: Unable to resolve 'glGenRenderbuffersEXT' 
getProcAddress: Unable to resolve 'glBindRenderbuffer' 
getProcAddress: Unable to resolve 'glBindRenderbufferOES' 
getProcAddress: Unable to resolve 'glBindRenderbufferARB' 
getProcAddress: Unable to resolve 'glBindRenderbufferEXT' 
getProcAddress: Unable to resolve 'glRenderbufferStorage' 
getProcAddress: Unable to resolve 'glRenderbufferStorageOES' 
getProcAddress: Unable to resolve 'glRenderbufferStorageARB' 
getProcAddress: Unable to resolve 'glRenderbufferStorageEXT' 
getProcAddress: Unable to resolve 'glGenRenderbuffers' 
getProcAddress: Unable to resolve 'glGenRenderbuffersOES' 
getProcAddress: Unable to resolve 'glGenRenderbuffersARB' 
getProcAddress: Unable to resolve 'glGenRenderbuffersEXT' 
getProcAddress: Unable to resolve 'glBindRenderbuffer' 
getProcAddress: Unable to resolve 'glBindRenderbufferOES' 
getProcAddress: Unable to resolve 'glBindRenderbufferARB' 
getProcAddress: Unable to resolve 'glBindRenderbufferEXT' 
getProcAddress: Unable to resolve 'glRenderbufferStorage' 
getProcAddress: Unable to resolve 'glRenderbufferStorageOES' 
getProcAddress: Unable to resolve 'glRenderbufferStorageARB' 
getProcAddress: Unable to resolve 'glRenderbufferStorageEXT' 
getProcAddress: Unable to resolve 'glFramebufferRenderbuffer' 
getProcAddress: Unable to resolve 'glFramebufferRenderbufferOES' 
getProcAddress: Unable to resolve 'glFramebufferRenderbufferARB' 
getProcAddress: Unable to resolve 'glFramebufferRenderbufferEXT' 
getProcAddress: Unable to resolve 'glFramebufferRenderbuffer' 
getProcAddress: Unable to resolve 'glFramebufferRenderbufferOES' 
getProcAddress: Unable to resolve 'glFramebufferRenderbufferARB' 
getProcAddress: Unable to resolve 'glFramebufferRenderbufferEXT' 
getProcAddress: Unable to resolve 'glGenBuffers' 
getProcAddress: Unable to resolve 'glGenBuffersOES' 
getProcAddress: Unable to resolve 'glGenBuffersARB' 
getProcAddress: Unable to resolve 'glGenBuffersEXT' 
getProcAddress: Unable to resolve 'glBindBuffer' 
getProcAddress: Unable to resolve 'glBindBufferOES' 
getProcAddress: Unable to resolve 'glBindBufferARB' 
getProcAddress: Unable to resolve 'glBindBufferEXT' 
getProcAddress: Unable to resolve 'glBufferData' 
getProcAddress: Unable to resolve 'glBufferDataOES' 
getProcAddress: Unable to resolve 'glBufferDataARB' 
getProcAddress: Unable to resolve 'glBufferDataEXT' 
getProcAddress: Unable to resolve 'glBindBuffer' 
getProcAddress: Unable to resolve 'glBindBufferOES' 
getProcAddress: Unable to resolve 'glBindBufferARB' 
getProcAddress: Unable to resolve 'glBindBufferEXT' 
getProcAddress: Unable to resolve 'glBindBuffer' 
getProcAddress: Unable to resolve 'glBindBufferOES' 
getProcAddress: Unable to resolve 'glBindBufferARB' 
getProcAddress: Unable to resolve 'glBindBufferEXT' 
getProcAddress: Unable to resolve 'glCreateProgram' 
getProcAddress: Unable to resolve 'glCreateProgramARB' 
getProcAddress: Unable to resolve 'glCreateProgramObject' 
getProcAddress: Unable to resolve 'glCreateProgramObjectARB' 
QOpenGLShaderProgram: could not create shader program 
getProcAddress: Unable to resolve 'glCreateShader' 
getProcAddress: Unable to resolve 'glCreateShaderARB' 
getProcAddress: Unable to resolve 'glCreateShaderObject' 
getProcAddress: Unable to resolve 'glCreateShaderObjectARB' 
QOpenGLShader: could not create shader 
Renderer failed shader compilation: 
"" 

Wie kann ich lösen dieses Problem? Bezieht sich dieses Problem auf meine Grafikkarte?

Antwort

8

Dies passiert, wenn Ihre Grafikkartentreiber OpenGL 2.0 nicht unterstützen, was für Qt.Quick-Anwendungen obligatorisch ist.

Die erste Lösung wäre, Ihren Grafikkartentreiber zu aktualisieren. Sie können auch OpenGL extensions Viewer verwenden, um zu überprüfen, welche OpenGL-Versionen Sie unterstützen.

Wenn Sie andererseits Ihre Apps in anderen Windows-Installationen bereitstellen möchten und nicht möchten, dass Benutzer ihre Treiber aktualisieren müssen, sollten Sie den Qt5-Build nicht auf der Basis von OpenGL verwenden basierend auf WINKEL. Bedauerlicherweise hat das Qt-Team seit Qt 5.1 aufgehört, Versionen von Qt mit ANGLE und mingw zu veröffentlichen. Sie müssen entweder Qt selbst neu kompilieren oder eine Version verwenden, die auf einem anderen Compiler basiert.

Weitere Informationen über QT5 und Windows und ANGLE/OpenGL kann here

EDIT für Qt5.3

Auf Qt 5.3 ein neues Signal zu QQuickWindow hinzugefügt wurde sceneGraphError, die Sie genannt gefunden werden können zu wissen, dass die Initialisierung fehlgeschlagen ist, anstatt nur einen leeren Bildschirm zu erhalten.

Auch das Qt-Team arbeitet an der Möglichkeit, OpenGL zuerst auf dem Client-Rechner auszuprobieren und falls es auf ANGLE zurückfällt. Dies ist immer noch experimentell in Qt 5.3 und sollte Teil der Qt 5.4 Release sein.

Verwandte Themen