2011-11-22 9 views
5

का उपयोग करने में बहुत धीमी गति से GLSurfaceView.Renderer की विधि में नियमित अंतराल पर स्नैपशॉट लेने के लिए glReadPixels का उपयोग कर रहा हूं। मुझे अपनी ऐप आवश्यकताओं के अनुसार अपना डेटा सहेजने के लिए नियमित अंतराल पर इस स्नैपशॉट को लेने की आवश्यकता है।glReadPixels

हालांकि glReadPixels प्रदर्शन वास्तव में धीमा है और एक अंतराल दिखाता है।

gl.glReadPixels(0, 0, 1280, 752, GL10.GL_RGBA,GL10.GL_UNSIGNED_BYTE, bb); 

वहाँ glReadPixels उपयोग करने के लिए एक विकल्प है: यहाँ कैसे मैं विधि का उपयोग है? मैं अंतराल के बिना छवि को कैसे बचा सकता हूं?

+2

हे यादृच्छिक, मुझे आश्चर्य है कि क्या आपने इस मुद्दे को किसी भी तरह हल किया है? मुझे एक समान glReadPixels बाधा का सामना करना पड़ रहा है। मैं देखता हूं कि बर्नी का जवाब स्वीकार कर लिया गया था। क्या पीबीओ रंग प्रारूप में मदद या स्विचिंग में मदद करता है? –

उत्तर

10

मुझे नहीं पता कि यह एंड्रॉइड पर उपलब्ध है, लेकिन शायद पीबीओ (पिक्सेल बफर ऑब्जेक्ट्स) प्रदर्शन को बढ़ावा देगा। यह OpenGL.org thread देखें।

हालांकि, चमत्कार की अपेक्षा न करें! 1280 * 752 आरजीबीए छवि के साथ, आप प्रत्येक फ्रेम के 3.67 एमबी डेटा ट्रांसफर कर रहे हैं। मुझे एंड्रॉइड के आंकड़े नहीं पता हैं, लेकिन मैं शर्त लगाता हूं कि आपको मेमोरी बैंडविड्थ या हार्ड ड्राइव लिखने की बाधा का सामना करना पड़ रहा है। यदि आप अपने पिक्सेल के आकार को कम करते हैं और बेहतर प्रदर्शन प्राप्त करते हैं, तो आप जानते हैं कि यह समस्या है।

इसके अलावा, क्या आपको "ए" घटक की आवश्यकता है? शायद आरजीबी वापस पढ़ना तेज है। विभिन्न प्रारूपों में वापस पढ़ने का प्रयास करें। कुछ वे दूसरों की तुलना में तेज़ हैं क्योंकि वे ओपनजीएल मेमोरी प्रस्तुति के लिए बेहतर मानचित्र बनाते हैं। उदाहरण के लिए, बीजीआरए आरजीबीए से तेज हो सकता है। जब आप एक प्रारूप का अनुरोध करते हैं जो ओपनजीएल के साथ मेल नहीं खाता है, तो प्रत्येक पिक्सेल को ऑपरेशन के दौरान परिवर्तित किया जाना चाहिए।

संबंधित मुद्दे