मुझे एनडीके और ईगल कमांड का उपयोग करके एंड्रॉइड टैबलेट पर बहुत कम प्रतिपादन समय के साथ समस्या है। मैंने eglSwapBuffers
पर कॉल किया है और समय की एक परिवर्तनीय मात्रा ले रहा है, अक्सर डिवाइस फ्रेम दर से अधिक है। मुझे पता है कि यह ताज़ा करने के लिए सिंक्रनाइज़ करता है, लेकिन यह लगभग 60 एफपीएस है, और यहां के समय नीचे अच्छी तरह से ड्रॉप हो जाते हैं।eglSwapBuffers अनियमित/धीमी है
स्वैप करने के लिए कॉल के बीच एकमात्र आदेश मैं glClear
है, इसलिए मुझे पता है कि यह कुछ भी नहीं है जिसे मैं समस्या पैदा कर रहा हूं। यहां तक कि फ्रेम दर को साफ़ करने से भी 30 एफपीएस तक गिर जाता है (हालांकि अनियमित)।
उसी डिवाइस पर जावा में एक साधारण जीएल प्रोग्राम आसानी से 60FPS पर प्रस्तुत करता है, इस प्रकार मुझे पता है कि यह मूल रूप से हार्डवेयर समस्या नहीं है। मैंने जीएल संदर्भ स्थापित करने के लिए एंड्रॉइड जावा कोड को देखा है और कोई महत्वपूर्ण अंतर नहीं देख सकता है। मैंने प्रत्येक कॉन्फ़िगरेशन विशेषता के साथ भी खेला है, और कुछ गति को थोड़ा बदलते हैं, कोई भी (जो मुझे मिल सकता है) इस भयानक फ्रेम दर ड्रॉप को बदल देता है।
यह सुनिश्चित करने के लिए कि ईवेंट मतदान कोई मुद्दा नहीं था, मैंने प्रतिपादन को थ्रेड में स्थानांतरित कर दिया। वह थ्रेड अब केवल प्रतिपादन करता है, इस प्रकार केवल स्पष्ट रूप से कॉल करता है और बार-बार स्वैप करता है। धीमी प्रदर्शन अभी भी बनी हुई है।
मैं विचारों से बाहर हूं कि क्या जांचना है और समस्या के बारे में सुझावों की तलाश में हूं।
यह जांचने का प्रयास करें कि क्या माप स्वयं समय नहीं खाता है, बस मामले में। – Vasaka
'eglSwapBuffers' एंड्रॉइड में अवरुद्ध कॉल है और यह कभी-कभी fps को प्रभावित करता है। आपने 'एंड्रॉइड: हार्डवेयर एक्सेलेरेटेड ' – blganesh101
भी कोशिश की है क्या आप कुछ कोड पोस्ट कर सकते हैं? यदि संभव हो तो अपने बेंचमार्किंग कोड को शामिल करना। आम तौर पर, कॉल करता है कि एक ओपनजीएल स्थिति "एक" बफर स्वैप "उनमें से एक हो सकता है) बेंचमार्किंग को पेंच कर देता है क्योंकि वे वे हैं जो वास्तव में आपके द्वारा बुलाए गए सभी पिछले आदेशों को संसाधित करते हैं। हालांकि, मुझे यकीन नहीं है कि यह संभव है क्योंकि आप केवल बफर स्वैप के बीच glClearing कर रहे हैं। वैसे भी, चलो कुछ कोड देखें। –