2012-02-13 21 views
5

आईओएस 5 में, ओपनजीएल ईएस बनावट कैश को कैमरे के वीडियो डेटा से ओपनजीएल तक सीधे तरीके से बफर की प्रतिलिपि बनाने की आवश्यकता के बिना पेश किया गया था। session 414 - Advances in OpenGL ES for iOS 5 of WWDC 2011 में बनावट कैश के लिए एक संक्षिप्त परिचय था।बनावट डेटा प्राप्त करने के लिए glReadPixels के बजाय ओपनजीएल ES बनावट कैश का उपयोग

मैं एक दिलचस्प article जो गालियाँ इस अवधारणा अंत में आगे और बस बनावट पर ताला लगा, और फिर बफर तक पहुँचने सीधे द्वारा glReadPixels के लिए एक कॉल में गतिरोध उत्पन्न पाया।

glReadPixels आईपैड 2 में उपयोग किए जाने वाले टाइल-आधारित रेंडरर के कारण वास्तव में धीमा है (यहां तक ​​कि जब आप केवल 1x1 बनावट का उपयोग करते हैं)। हालांकि, वर्णित विधि glReadPixels से तेज़ प्रक्रिया प्रतीत होती है।

क्या लेख में प्रस्तावित विधि भी मान्य है और इसका उपयोग glReadPixels पर निर्भर अनुप्रयोगों को बढ़ावा देने के लिए किया जा सकता है?

चूंकि OpenGL CPU के समानांतर में ग्राफिक्स डेटा को संसाधित करता है, तो CVPixelBufferLockBaseAddress कॉल को कब पता होना चाहिए कि ओपनजीएल से बात किए बिना प्रतिपादन कब किया जाता है?

उत्तर

4

मैं अपने ऊपर से जुड़े लेख और WWDC 2011 यह देखते हुए कि एप्पल अपने नमूनों में से एक में यह प्रयोग किया जाता से एप्पल के ChromaKey नमूने के आधार पर this answer में यह कर, का एक साधन का वर्णन है, और कहा कि मैं कुछ भी इस का मुकाबला नहीं सुना है उनके ओपनजीएल ईएस इंजीनियरों से, मुझे विश्वास है कि यह बनावट कैश का वैध उपयोग है। यह हर आईओएस 5.x- संगत डिवाइस पर काम करता है जिसे मैंने कोशिश की है, और आईओएस 5.0 और 5.1 में भी काम करता है। यह glReadPixels() से बहुत तेज है।

जहां तक ​​पिक्सेल बफर बेस पता लॉक करना है, तो आप glFlush() या जब तक आपके एफबीओ बनावट में सभी डेटा प्रस्तुत नहीं किए जाते हैं तब तक ब्लॉक करने की तरह सक्षम होना चाहिए। यह बनावट-समर्थित एफबीओ से किए गए 30 एफपीएस 1080 पी मूवी एन्कोडिंग के लिए काम करता प्रतीत होता है।