2013-12-11 8 views
6

Ho scaricato e installato la versione "Qt 5.2 mingw (opengl e x86)". Quando eseguo progetti Qt con questa versione di Qt, non ci sono problemi. Ma quando faccio funzionare un'applicazione rapida Qt, il crash del programma e seguenti messaggi di login di debug:Errore: QOpenGLShader: impossibile creare shader - durante la compilazione delle applicazioni QtQuick con 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: 
"" 

come posso risolvere questo problema? Questo problema è correlato alla mia scheda grafica?

risposta

8

Ciò accade quando i driver della scheda grafica non supportano OpenGL 2.0, che è obbligatorio per le applicazioni Qt.Quick.

La prima soluzione sarebbe l'aggiornamento del driver della scheda grafica. Puoi anche utilizzare OpenGL extensions Viewer per verificare quali versioni di OpenGL supportate.

D'altra parte, se si desidera poter distribuire le app ad altre installazioni di Windows e non si vuole chiedere agli utenti di aggiornare i loro driver, non si dovrebbe usare la build Qt5 basata su OpenGL ma quelle basato su ANGLE. Con rammarico, dal momento che Qt 5.1, il team di Qt ha smesso di rilasciare versioni di Qt con ANGLE e mingw. Quindi è necessario ricompilare Qt da soli o usare una versione basata su un altro compilatore.

Maggiori informazioni su QT5 e Windows e l'angolo/OpenGL può essere trovato here

EDIT per Qt5.3

Su Qt 5.3 un nuovo segnale è stato aggiunto al QQuickWindow chiamato sceneGraphError che consente per sapere che l'inizializzazione è fallita invece di ottenere solo uno schermo vuoto.

Anche il team Qt sta lavorando sulla possibilità di provare prima OpenGL sul computer client e se fallisce il fallback su ANGLE. Questo è ancora sperimentale in Qt 5.3 e dovrebbe essere parte della versione Qt 5.4.

Problemi correlati