का संयोजन मैं एक आईपी * गेम विकसित कर रहा हूं और मैं यूआईकिट और ओपनजीएल ईएस 2.0 दोनों का उपयोग करता हूं। UIKit तत्व ओपनजीएल दृश्य पर प्रस्तुत किए जाते हैं और स्क्रीन स्पेस की एक महत्वपूर्ण (मनमाना) राशि पर कब्जा करते हैं। मुझे यह स्वीकार करना होगा कि ऐप्पल ने एक उत्कृष्ट काम किया है और खेल की फ्रेम दर हमेशा 60 एफपीएस है।UIView एनीमेशन ब्लॉक और ओपनजीएल ईएस रेंडरिंग
आदेश में इस निष्कर्ष पर पहुंचा में मैं प्रदर्शन के बारे में कई परीक्षण किए गए:
- मैं ओपन दृश्य में UIViews स्थिर के बहुत सारे (नहीं चलती) जोड़ा - ठीक है!
- मैं कस्टम कोड का उपयोग करके एनिमेटेड एक ही UIViews (मेरे गेम के ड्रॉफ्रेम विधि में केंद्र संपत्ति को संशोधित) - ठीक है!
- मैंने UIViews के तहत कई ओपनजीएल ES तत्व जोड़े - ठीक है!
- मैंने UIViews के तहत कई चल रहे OpenGL ES तत्व जोड़े - ठीक है!
तो, अब मैं UIKit तत्वों को एनिमेट करने के लिए कोर एनीमेशन फ्रेमवर्क का उपयोग करना चाहता हूं। मैं
[UIView animateWithDuration:delay:options:animations:completion:]
एनीमेशन करने के लिए ओडर में (मैं आईओएस 4 या नए को लक्षित करता हूं) का उपयोग करता हूं।
समस्या अब है कि फ्रेम दर इस अजीब व्यवहार है: कभी कभी मैं कई कई UIKit एनिमेट तत्वों के साथ 60 fps (30 तत्वों मेरे लिए ठीक है) हो जाते हैं और कुछ अन्य समय फ्रेम दर के तहत स्पष्ट रूप से है एकल एनिमेटिंग UIKit तत्व के साथ 60 एफपीएस भी है लेकिन मैं इसे इंस्ट्रूमेंट्स के साथ माप नहीं सकता! मुझे और बताएं: जब मैं इंस्ट्रूमेंट खोलता हूं और कोर एनीमेशन और/या ओपनजीएल ड्राइवर की निगरानी करता हूं तो मुझे हमेशा 60 एफपीएस मिलते हैं। लेकिन यह स्पष्ट है कि यह मामला नहीं है, मैं ओपनजीएल एनिमेशन को शीर्ष पर संबंधित UIKit एनिमेशन की तुलना में बहुत धीमी गति से स्थानांतरित करने के लिए देख सकता हूं। यदि मैं दृश्य से UIKit तत्वों को हटा देता हूं तो फ्रेम दर सामान्य पर वापस आती है। जैसा कि मैंने वर्णन किया है, उसके साथ एक समान स्थिति किसी भी ओपनजीएल ईएस गेम में होती है जब उपयोगकर्ता गेम खेलने के दौरान डिवाइस की मात्रा बदलता है। जब पारदर्शी दृश्य जो दिखाता है कि वर्तमान वॉल्यूम खराब हो जाता है और जब तक यह पूरी तरह से फिसल जाता है तो फ्रेम दर बहुत कम हो जाती है, लेकिन उपकरणों में (मैंने यह परीक्षण भी किया है) यह 60 एफपीएस पर फंस गया है!
तो, समेकित करने के लिए: कभी-कभी मुझे ब्लॉक एनीमेशन के साथ वास्तविक 60 एफपीएस मिलते हैं, बिना किसी अप और डाउन के चलते और कुछ अन्य बार मुझे कोई अप और डाउन के साथ नकली 60 एफपीएस मिलते हैं।
क्या आपके पास इसका कोई समाधान है? सभी परीक्षणों आईओएस 5.1 के साथ