हम एक ऐसे गेम को विकसित कर रहे हैं जिसमें ओपनजीएल ईएस व्यू पर विशेष रूप से UIViews
के साथ 2 डी तत्व प्रदर्शित होते हैं (विशेष रूप से, हम जीएलकिट के GLKView
का उपयोग कर रहे हैं) और स्थिति को पूरी तरह सिंक में रखने में समस्याएं आ रही हैं।ओपनजीएल फ्रेम को UIView लेआउट को सिंक्रनाइज़ करें
पैरेंट व्यू के layoutSubviews
में, हम स्क्रीन पर दुनिया में 3 डी पदों का प्रक्षेपण कर रहे हैं, और गेम में कई UIView
"मार्कर" के लिए स्थानों के रूप में उपयोग कर रहे हैं। पूरा गेम केवल कैमरे को ले जाने वाले उपयोगकर्ता के जवाब में अपडेट होता है, और कैमरा प्रत्येक बार चलने पर setNeedsLayout
दृश्य को बताता है।
सब कुछ ठीक काम कर रहा है, सिवाय इसके कि मार्कर 3 डी प्रतिपादन के साथ सिंक्रनाइज़ेशन के लगभग 1 फ्रेम लगते हैं। मैं मोटे तौर पर कहता हूं क्योंकि (1) यह अनुमान है! और (2) मैं सोच रहा हूं कि संभावित रूप से एक मल्टीथ्रेडिंग समस्या है: GLKView
एक विशेष स्क्रीन रीफ्रेश कॉलबैक या कुछ सिंक करने के लिए सिंक नहीं है?
क्या दृश्य के लेआउट को जोड़ने का कोई तरीका है सबव्यूव्स ताकि यह 3 डी व्यू अपडेट को सिंक कर सके?
अद्यतन: अजीब तरह से, तुरंत setNeedsLayout
के बाद layoutIfNeeded
बुला समस्या बदतर बनाता है! संभवतः 2 या अधिक फ्रेम बाहर। वास्तव में यह समझ में नहीं आता!