मैं बहुत सारे बनावट अपलोड कर रहा हूं (60 वीजीए छवियां एक सेकंड) और यह मेरे यूआई थ्रेड को अवरुद्ध कर रहा है। the Qt 5.1 QGLWidget manual page (जोर मेरा):QGLWidget एक और धागे में? दस्तावेज का जिक्र क्या है?
धागे में बनावट अपलोड करना। थ्रेड में बनावट अपलोड करना अनुप्रयोगों के लिए बहुत उपयोगी हो सकता है जो बड़ी मात्रा में छवियों को प्रदर्शित करने की आवश्यकता होती है, उदाहरण के लिए एक फोटो गैलरी एप्लिकेशन। यह मौजूदा बाइंडटेक्चर() एपीआई के माध्यम से क्यूटी में समर्थित है। ऐसा करने का एक आसान तरीका दो साझाकरण QGLWidgets बनाना है। एक को मुख्य जीयूआई थ्रेड में चालू किया जाता है, जबकि दूसरा बनावट अपलोड थ्रेड में चालू होता है। अपलोडिंग थ्रेड में विजेट कभी नहीं दिखाया गया है, इसका उपयोग केवल मुख्य धागे के साथ बनावट साझा करने के लिए किया जाता है। बाइंडटेक्चर() के माध्यम से बंधे प्रत्येक बनावट के लिए, मुख्य धागे को सूचित करें ताकि यह बनावट का उपयोग शुरू कर सके।
क्या? एक QWLget- आधारित वर्ग जैसे QGLWidget को थ्रेड में कैसे स्थानांतरित किया जा सकता है? ऐसा करने का प्रयास करने में परिणाम:
QObject::moveToThread: Widgets cannot be moved to a new thread
मुझे समझ में नहीं आता कि दस्तावेज क्या सुझाव दे रहा है जिसे मैं लागू करने के लिए लागू करता हूं। UI थ्रेड से bindTexture()
निष्पादन।
यह भी यहाँ उल्लेख किया जाता है: Qt4/Opengl bindTexture in separated thread
कोई कोड वहाँ हालांकि तैनात।
हाँ। अधिक जानकारी [यहां] (http://blog.qt.digia.com/blog/2011/06/03/threaded-opengl-in-4-8/)। इसके अलावा, क्यूटी 5 में, आपको वास्तव में QOpenGL * कक्षाओं का उपयोग करना चाहिए, क्यूजीएल * वर्ग नहीं, जहां संभव हो। – peppe