ARCore 1.17.0 में जोड़ा गया
ज़्यादातर ऐप्लिकेशन को रेंडरिंग के लिए, सिर्फ़ एक कैमरे के फ़्रेम को बफ़र करना होगा. हालांकि, ARCore, तय साइज़ में एक से ज़्यादा कैमरा फ़्रेम की बफ़रिंग की सुविधा भी देता है राउंड-रॉबिन टेक्सचर लिस्ट.
मल्टीथ्रेड वाली रेंडरिंग पाइपलाइन वाले ऐप्लिकेशन, बफ़रिंग की सुविधा का इस्तेमाल कर सकते हैं. इससे, वे बेहतर नतीजे पाने में मदद कर सकते हैं रेंडरिंग परफ़ॉर्मेंस. बफ़रिंग की मदद से ऐप्लिकेशन, फ़्रेम रेंडर होने में ज़्यादा मदद कर सकते हैं एक जैसी फ़्रेम रेट तय करता है. इससे वीडियो देखते समय सामने आने वाली अड़चन को कम किया जा सकता है यूज़र इंटरफ़ेस (यूआई) की धीमी रेंडरिंग.
पहले से तय शर्तें
नीचे दी गई किसी भी स्थिति में, कैमरा इमेज बफ़रिंग की सुविधा चालू हो जाती है:
Session.setCameraTextureNames(ids)
को कॉल करके ऐप्लिकेशन में यह सुविधा चालू होने पर का इस्तेमाल करें.जब अंदरूनी बफ़रिंग की ज़रूरत वाली एक या एक से ज़्यादा ARCore सुविधाएं हों, तो चालू है. फ़िलहाल, इसमें ये सुविधाएं शामिल हैं:
- ऑगमेंटेड इमेज
- ऑगमेंटेड फ़ेस
ARCore के साथ काम करने वाले कुछ ऐसे डिवाइस पर जिन्हें डिवाइस के अंदर बफ़र करने की ज़रूरत होती है सही तरीके से काम कर सके.
तय करें कि फ़्रेम रेंडर होने में लगने वाला समय चालू है या नहीं
यह पता करने के लिए कि दिए गए डिवाइस और एआर सेशन में फ़्रेम बफ़रिंग है या नहीं (साथ ही
जिसे फ़्रेम में देरी कहा जाता है) चालू है, तो adb
लॉगकैट आउटपुट का इस्तेमाल करें:
# Camera frame buffering is turned off when frame delay is zero.
adb logcat | grep 'Update Frame Delay'
… I native : session.cc:3141 Update Frame Delay to 0 frames.
# Camera frame buffering is turned on when frame count is non-zero.
# Note: The size of the buffer can vary over time.
adb logcat | grep 'Update Frame Delay'
… I native : session.cc:3141 Update Frame Delay to 6 frames.
…
… I native : session.cc:3141 Update Frame Delay to 4 frames.
…
… I native : session.cc:3141 Update Frame Delay to 2 frames.
मेमोरी
बफ़र होने पर, हर अतिरिक्त कैमरा फ़्रेम के लिए मेमोरी का इस्तेमाल बेहतर होता है. उदाहरण के लिए, 1080p टेक्स्चर करीब 6 एमबी मेमोरी का इस्तेमाल करता है (इसे गुणा करके हासिल किया जाता है 1920 x 1080 x 3 बाइट आरजीबी डेटा (हर पिक्सल में) का रिज़ॉल्यूशन).
प्रदर्शन संबंधी विचार
एक से ज़्यादा कैमरा फ़्रेम का इस्तेमाल करने से, कन्वर्ज़न में होने वाले उतार-चढ़ाव कम होने की कोई गारंटी नहीं है नहीं है. साथ ही, मल्टीथ्रेड रेंडरिंग पाइपलाइन का इस्तेमाल करने से आपकी परफ़ॉर्मेंस को बेहतर बनाया जा सकता है. कॉन्टेंट को इन वजहों से प्रभावित किया जाता है: असल दुनिया में परफ़ॉर्मेंस:
ऐप्लिकेशन रेंडरिंग पाइपलाइन
ऐप्लिकेशन थ्रेडिंग मॉडल
डिवाइस का सीपीयू आर्किटेक्चर
ऑपरेटिंग सिस्टम शेड्यूलिंग सिस्टम
अगर आपका ऐप्लिकेशन अतिरिक्त कैमरा फ़्रेम का फ़ायदा नहीं ले पाता है, तो का इस्तेमाल करने से मिलती है.
बफ़रिंग की सुविधा चालू करें
ARCore को यह निर्देश देने के लिए कि इनकमिंग कैमरा फ़्रेम को बफ़र करने के लिए, कौनसे टेक्सचर इस्तेमाल करें, इसका इस्तेमाल करें
एक या एक से ज़्यादा टेक्सचर आईडी का कलेक्शन देने के लिए, Session.setCameraTextureNames(ids)
.
इस फ़ंक्शन को सेशन बनाने के बाद ही कॉल किया जाता है. इसे आम तौर पर ही कॉल किया जाता है
एक बार.
Session.update()
को किए जाने वाले हर कॉल के दौरान, ARCore अगले टेक्सचर को ओवरराइट कर देता है
की सूची में हो. अगर आपका ऐप्लिकेशन सिर्फ़ एक टेक्सचर आईडी सेट करता है,
उसी बनावट को हर बार ओवरराइट कर दिया जाएगा.
इससे जुड़े टेक्सचर आईडी का पता लगाने के लिए, Frame.getCameraTextureName()
का इस्तेमाल करें
पर सेट करें.