簡體   English   中英

錯誤:QOpenGLShader:無法創建着色器 - 使用Qt5.2編譯QtQuick應用程序時Mingw OpenGL

[英]Error: QOpenGLShader: could not create shader - when compiling QtQuick applications with Qt5.2 Mingw OpenGL

我已經下載並安裝了“Qt 5.2 mingw(opengl和x86)”版本。 當我用這個版本的Qt運行Qt項目時,沒有問題。 但是當我運行Qt Quick應用程序時,程序崩潰並跟隨消息登錄調試:

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: 
"" 

我該如何解決這個問題? 這個問題與我的顯卡有關嗎?

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

第一個解決方案是升級您的顯卡驅動程序。 您還可以使用OpenGL擴展查看器來驗證您支持的OpenGL版本。

另一方面,如果您希望能夠將應用程序部署到其他Windows安裝,並且不希望要求用戶更新其驅動程序,那么您不應該使用基於OpenGL的Qt5構建,而應該使用基於ANGLE的構建。 遺憾的是,從Qt 5.1開始,Qt團隊停止發布帶有ANGLE和mingw的Qt版本。 因此,您需要自己重新編譯Qt或使用基於其他編譯器的版本。

有關Qt5和Windows以及ANGLE / OpenGL的更多信息,請訪問此處

編輯Qt5.3

Qt 5.3QQuickWindow添加了QQuickWindow名為sceneGraphError的新信號,它允許您知道初始化失敗而不是僅僅獲得空白屏幕。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM