2013-12-11 12 views
6

我已經下載並安裝了「Qt 5.2 mingw(opengl和x86)」版本。當我使用Qt版本運行Qt項目時,沒有任何問題。但是當我運行一個Qt的快速應用,程序崩潰和下面的信息登錄調試:錯誤:QOpenGLShader:無法創建着色器 - 使用Qt5.2編譯QtQuick應用程序時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: 
"" 

我怎樣才能解決這個問題呢?這個問題與我的圖形卡有關嗎?

回答

8

當您的圖形卡驅動程序不支持Qt.Quick應用程序必需的OpenGL 2.0時會發生這種情況。

第一個解決方案是升級您的圖形卡驅動程序。您也可以使用OpenGL extensions Viewer來驗證您支持哪些OpenGL版本。另一方面,如果您希望能夠將您的應用程序部署到其他Windows安裝中,並且不想要求用戶更新其驅動程序,那麼您不應該使用基於OpenGL的Qt5構建,而應該使用基於OpenGL的Qt5構建基於ANGLE。遺憾的是,自Qt 5.1以來,Qt團隊停止使用ANGLE和mingw發佈Qt版本。所以你要麼需要自己重新編譯Qt,要麼使用基於另一個編譯器的版本。

約QT5和Windows和角度/ OpenGL的更多信息,可以發現here

編輯Qt5.3

Qt 5.3一個新的信號已被添加到QQuickWindow稱爲sceneGraphError,它允許你要知道初始化失敗,而不是隻是空白屏幕。

此外,Qt團隊正在努力在客戶端計算機上首先嚐試OpenGL,並且它無法回退到ANGLE。這在Qt 5.3中仍然是實驗性的,應該是Qt 5.4版本的一部分。