2013-12-11 10 views
6

के साथ QtQuick अनुप्रयोगों को संकलित करते समय शेडर नहीं बना सका। मैंने "Qt 5.2 mingw (opengl और x86)" संस्करण डाउनलोड और स्थापित किया है। जब मैं क्यूटी के इस संस्करण के साथ क्यूटी परियोजनाओं को चलाता हूं, तो कोई समस्या नहीं है। लेकिन जब मैं एक क्यूटी त्वरित अनुप्रयोग चलाता हूं, प्रोग्राम क्रैश और निम्न संदेश डीबग में लॉग इन करते हैं:त्रुटि: QOpenGLShader: 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: 
"" 

मैं इस समस्या को कैसे हल कर सकता हूं? क्या यह समस्या मेरे ग्राफिक कार्ड से संबंधित है?

उत्तर

8

ऐसा तब होता है जब आपका ग्राफ़िक कार्ड ड्राइवर OpenGL 2.0 का समर्थन नहीं करता है जो Qt.Quick अनुप्रयोगों के लिए अनिवार्य है।

पहला समाधान आपके ग्राफ़िक कार्ड ड्राइवर को अपग्रेड करना होगा। आप कौन से OpenGL संस्करणों का समर्थन करते हैं, यह सत्यापित करने के लिए आप OpenGL extensions Viewer का भी उपयोग कर सकते हैं।

दूसरी तरफ, यदि आप अपने ऐप्स को अन्य विंडोज इंस्टॉलेशन में तैनात करने में सक्षम होना चाहते हैं और उपयोगकर्ताओं को अपने ड्राइवर अपडेट करने के लिए नहीं कहना चाहते हैं तो आपको ओपनजीएल के आधार पर Qt5 बिल्ड का उपयोग नहीं करना चाहिए, लेकिन ANGLE पर आधारित है। अफसोस की बात है, क्यूटी 5.1 के बाद, क्यूटी टीम ने एएनगल और मिंगव के साथ क्यूटी के संस्करण जारी करना बंद कर दिया। तो आपको या तो खुद को क्यूटी को पुन: संकलित करने या किसी अन्य कंपाइलर के आधार पर एक संस्करण का उपयोग करने की आवश्यकता है।

Qt5 और Windows और कोण/ओपन बारे में अधिक जानकारी Qt5.3

के लिए पाया जा सकता है here

संपादित Qt 5.3 पर एक नया संकेत QQuickWindow में जोड़ा गया है sceneGraphError कहा जाता है जो आप की अनुमति देता है यह जानने के लिए कि केवल रिक्त स्क्रीन प्राप्त करने के बजाय प्रारंभिक विफल रहा।

साथ ही क्यूटी टीम क्लाइंट मशीन पर ओपनजीएल को आजमाने की क्षमता पर काम कर रही है और यदि यह एंगल पर फ़ॉलबैक विफल हो जाती है। यह अभी भी Qt 5.3 में प्रयोगात्मक है और Qt 5.4 रिलीज का हिस्सा होना चाहिए।