2013-01-17 33 views
6

मैं एक एंड्रॉइड एप्लिकेशन प्रकार उंगली पेंट विकसित कर रहा हूं। मैं ओपनजीएल ईएस 2.0 का उपयोग कर रहा हूं। असल में मेरे पास एक छवि है जहां प्रत्येक टच स्क्रीन को एक सर्कल अल्फा से लागू किया जाना चाहिए जहां इसे नीचे की दूसरी छवि दिखाई दे। मैंने विभिन्न तकनीकों की कोशिश की लेकिन धीमे हैं क्योंकि यह कार्बनिक glTexSubImage2D का उपयोग करने जैसा काम करता है जो प्रतिपादन चरण को धीमा करता है। मैं एफबीओ के उपयोग को समझने की कोशिश कर रहा हूं क्योंकि वे ऑफ़-स्क्रीन प्रतिपादन की अनुमति देते हैं। क्या कोई बेहतर तरीके से समझा सकता है कि इसका अर्थ है ऑफ-स्क्रीन को प्रस्तुत करना और मेरी विधि को तेज करने के लिए कौन से फायदे प्राप्त हो सकते हैं?एंड्रॉइड ओपनगल एफबीओ ऑफ़स्क्रीन

मुझे लगता है कि ऑफ़-स्क्रीन का मतलब है कि आप मेरे द्वारा बनाई गई फ्रेमबफर को ड्रॉफ्रेम पर रास्ते से बदल सकते हैं? एक और धागे में?

उत्तर

0

आप दृष्टिकोण को बहुत मेमोरी बैंडविड्थ तक ले जाते हैं क्योंकि आपको स्क्रीन को वापस पढ़ने (भाग का) पढ़ने की आवश्यकता होती है और जीपीयू मेमोरी में वापस उसी डेटा को फिर से लिखना पड़ता है। यह वास्तव में धीमा है और प्रतिपादन से पहले छवि को GPU पर वापस ले जाने से पहले आपका ड्राइंग कोड प्रतीक्षा कर देता है। क्या आपने प्रत्येक उंगली प्रेस या किसी प्रकार की आदिम के लिए ड्राइंग क्वाड माना है जो आपकी आवश्यकताओं का अनुमान लगाता है? इसके लिए आपको ओपनजीएल की आवश्यकता क्यों है?

1

ओपन ES 2.0 का उपयोग कर एक ऑन-स्क्रीन विंडो में प्रस्तुत करना करने में सक्षम होने के अलावा, आप भी pbuffers (पिक्सेल बफर का संक्षिप्त रूप) कहा जाता nonvisible ऑफ स्क्रीन सतहों में प्रदान कर सकते हैं। Pbuffers किसी भी हार्डवेयर त्वरण ओपनजीएल ES 2.0 के लिए उपलब्ध त्वरण का पूरा लाभ ले सकता है, जैसे खिड़की करता है। Pbuffers अक्सर बनावट मानचित्र बनाने के लिए उपयोग किया जाता है। यदि आप को एक बनावट में प्रस्तुत करना चाहते हैं, तो हम फ्रेमबफर ऑब्जेक्ट्स (को अध्याय 12, "फ्रेमबफर ऑब्जेक्ट्स" में पीबीफर्स के बजाय कवर करने की सलाह देते हैं क्योंकि वे अधिक कुशल हैं। हालांकि, कुछ मामलों के लिए pbuffers अभी भी उपयोगी हो सकते हैं जहां फ्रेमबफर ऑब्जेक्ट्स का उपयोग नहीं किया जा सकता है, जैसे ओपनजीएल ईएस के साथ ऑफ-स्क्रीन सतह को प्रस्तुत करते समय और फिर इसे किसी अन्य एपीआई जैसे बनावट के रूप में ओपनवीजी के रूप में उपयोग करना।

[स्रोत: ओपन ES 2.0 प्रोग्रामिंग गाइड]

मुझे आशा है कि इस मदद करता है। इसे ध्यान से पढ़ें - "ओपनजीएल ईएस"

+0

के साथ ऑफ-स्क्रीन सतह पर प्रतिपादन के लिए पीबीफर्स अभी भी उपयोगी हो सकते हैं, हालांकि, मैंने उल्लेख किया है कि दो ईजीएल संदर्भों के बीच स्विच करने की आवश्यकता के कारण एंड्रॉइड पर पीबीफर दृष्टिकोण धीमा है। इसके बजाय, स्टैक ओवरफ्लो उत्तरों की खोज करें जो "फ्रेमबफर ऑब्जेक्ट" का उपयोग ऑफस्क्रीन बफर के रूप में करते हैं। – ToolmakerSteve