का आकार बदलना जब GLKView
का आकार बदलता है, तो GLKView
के बफर और संदर्भ पर होने वाले कुछ पीछे के दृश्य संचालन होते हैं। उस समय के दौरान इन दृश्यों को करने के लिए, GLKView
पर ड्राइंग करने के दौरान सही परिणाम नहीं मिलते हैं।एक GLKView
मेरी परिदृश्य में, मैं इतना है कि कभी भी मैं इसे स्क्रीन पर सामग्री है अद्यतन करने की आवश्यकता है, मैं सिर्फ इतना है कि GLKView
पर -setNeedsDisplay
फोन, एक GLKView
है कि setNeedsDisplay
सक्षम है। मैं छवियों को आकर्षित करने के लिए GLKView
का उपयोग कर रहा हूं, इसलिए यदि मुझे एक अलग आकार के साथ एक छवि खींचने की आवश्यकता है, तो मुझे GLKView
के आकार को भी बदलने की आवश्यकता है।
समस्या: जब मैं GLKView
का आकार बदलता हूं और उस दृश्य पर setNeedsDisplay
पर कॉल करता हूं, तो स्क्रीन पर परिणाम सही नहीं होता है। ऐसा इसलिए है क्योंकि GLKView
नई छवि को आकर्षित करने की कोशिश करने से पहले नए आकार के परिवर्तन द्वारा लगाए गए पीछे के दृश्यों को परिष्कृत नहीं किया गया है।
मुझे पर setNeedsDisplay
की बजाय performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0
पर कॉल करके यह एक कार्य-आसपास मिला। यह मूल रूप से मुख्य धागे को setNeedsDisplay
पर कॉल करने से पहले सभी पीछे के दृश्यों के लिए ओपनजीएल ऑपरेशंस को पूरा करने के लिए मजबूर करता है। हालांकि यह ठीक काम करता है, मैं सोच रहा हूं कि कोई बेहतर समाधान है या नहीं। उदाहरण के लिए, क्या ओपनजीएल कॉल जारी रखने से पहले सभी ओपनजीएल ऑपरेशंस को पूरा करने के लिए थ्रेड इंतजार करने के लिए एक ओपनजीएल कॉल है?
मैं आपको गले लगा सकता हूं – dxb
आपने इसे कैसे रीसेट किया? इसे खरोंच से दोबारा बनाना? या कॉल करने के लिए एक विशिष्ट विधि है। – flainez
मेरे मामले में, आकार बदलने के बाद मैं अपनी 'सीआईसीएन्टेक्स्ट' ऑब्जेक्ट को इस प्रकार सेट कर रहा था: 'ci_context = [CIContext संदर्भ WithEAGLContext: glkView.context] 'और फिर' [glkView display] 'को कॉल करना। ध्यान दें कि यह बहुत समय पहले था और मैंने इसके बारे में सीखने का प्रयास नहीं किया, इसलिए मान लें कि यह सही दृष्टिकोण नहीं है। – spybart