Name String
XR_ANDROID_device_anchor_persistence
एक्सटेंशन टाइप
इंस्टेंस एक्सटेंशन
रजिस्टर किया गया एक्सटेंशन नंबर
458
बदलाव
1
एक्सटेंशन और वर्शन की डिपेंडेंसी
XR_EXT_uuid और XR_ANDROID_trackables
पिछली बार बदलाव करने की तारीख
2024-10-10
आईपी का स्टेटस
आईपी पर कोई दावा नहीं किया गया है.
योगदान देने वाले
निहाव जैन, Google
लेवाना चेन, Google
स्पेंसर क्विन, Google
केनी वर्कमेयर, Google
खास जानकारी
इस एक्सटेंशन की मदद से, ऐप्लिकेशन मौजूदा डिवाइस पर मौजूद ऐप्लिकेशन और डिवाइस के सेशन में, मौजूदा उपयोगकर्ता के लिए ऐंकर को सेव, वापस पाएं, और सेव किए गए ऐंकर को हटाएं.
सिस्टम की क्षमता की जांच करना
XrSystemDeviceAnchorPersistencePropertiesANDROID स्ट्रक्चर को इस तरह परिभाषित किया गया है:
typedef struct XrSystemDeviceAnchorPersistencePropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsAnchorPersistence;
} XrSystemDeviceAnchorPersistencePropertiesANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.supportsAnchorPersistenceएकXrBool32है, जो यह बताता है कि मौजूदा सिस्टम, स्पेस ऐंकर के लिए ऐंकर के बने रहने की सुविधा के साथ काम करता है या नहीं.
कोई ऐप्लिकेशन यह जांच कर सकता है कि सिस्टम, स्पेस ऐंकर को सेव कर सकता है या नहीं. इसके लिए, xrGetSystemProperties को कॉल करते समय, XrSystemProperties को XrSystemDeviceAnchorPersistencePropertiesANDROID स्ट्रक्चर के साथ एक्सटेंड़ करें. xrCreateAnchorSpaceANDROID देखें. ट्रैक किए जा सकने वाले ऐंकर के लिए, ऐप्लिकेशन xrEnumerateSupportedPersistenceAnchorTypesANDROID का इस्तेमाल करके, काम करने वाले टाइप के बारे में क्वेरी कर सकता है.
अगर supportsAnchorPersistence के लिए XR_FALSE दिखाया जाता है, तो स्पेशल ऐंकर पर काम करने वाले डिवाइस ऐंकर के 'डेटा को सेव रखने वाले फ़ंक्शन' से XR_ERROR_FEATURE_UNSUPPORTED दिखाया जाएगा.
मान्य इस्तेमाल (इंप्लिसिट)
- XrSystemDeviceAnchorPersistencePropertiesANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_device_anchor_persistenceएक्सटेंशन को चालू करना ज़रूरी है typeहोनी चाहिएXR_TYPE_SYSTEM_DEVICE_ANCHOR_PERSISTENCE_PROPERTIES_ANDROIDnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
xrEnumerateSupportedPersistenceAnchorTypesANDROID फ़ंक्शन के बारे में इस तरह बताया गया है:
XrResult xrEnumerateSupportedPersistenceAnchorTypesANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t trackableTypeCapacityInput,
uint32_t* trackableTypeCountOutput,
XrTrackableTypeANDROID* trackableTypes);
पैरामीटर की जानकारी
session, XrSession है, जो XrDeviceAnchorPersistenceANDROID बनाता है.trackableTypeCapacityInput,trackableTypesकी क्षमता है या ज़रूरी क्षमता पाने के लिए 0.trackableTypeCountOutput, कलेक्शन में मौजूद आइटम की संख्या का पॉइंटर होता है. अगरtrackableTypeCapacityInputकी वैल्यू कम है, तो यह ज़रूरी क्षमता का पॉइंटर होता है.trackableTypes, XrTrackableTypeANDROID के कलेक्शन का पॉइंटर है. हालांकि, अगरtrackableTypeCapacityInput0है, तोNULLहो सकता है.- ज़रूरी
trackableTypesसाइज़ को वापस पाने के बारे में पूरी जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, XrTrackableTypeANDROID ट्रैक किए जा सकने वाले अन्य आइटम पर ऐंकर के बने रहने की सुविधा के साथ काम करने की जांच करने के लिए, xrEnumerateSupportedPersistenceAnchorTypesANDROID का इस्तेमाल कर सकता है.
अगर कोई दिया गया XrTrackableTypeANDROID, trackableTypes कलेक्शन में नहीं दिखता है, तो XR_ERROR_FEATURE_UNSUPPORTED को डिवाइस के ऐसे ऐंकर से रिटर्न किया जाएगा जो उस टाइप के ऐंकर पर काम करते हैं.
मान्य इस्तेमाल (इंप्लिसिट)
- xrEnumerateSupportedPersistenceAnchorTypesANDROID को कॉल करने से पहले,
XR_ANDROID_device_anchor_persistenceएक्सटेंशन को चालू करना ज़रूरी है instanceयह एक मान्य XrInstance हैंडल होना चाहिएtrackableTypeCountOutput,uint32_tवैल्यू का पॉइंटर होना चाहिए- अगर
trackableTypeCapacityInput,0, trackableTypesनहीं है, तोtrackableTypeCapacityInputके लिए ज़रूरी है कि वह XrTrackableTypeANDROID वैल्यू के ऐरे का पॉइंटर हो
रिटर्न कोड
XR_SUCCESS
XR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_FUNCTION_UNSUPPORTED
डिवाइस ऐंकर पर्सिस्टेंस हैंडल बनाना
XrDeviceAnchorPersistenceANDROID एक हैंडल है, जो उन संसाधनों को दिखाता है जो सेव किए गए ऐंकर को सेव रखने और उनका ट्रैक रखने के लिए ज़रूरी होते हैं.
XR_DEFINE_HANDLE(XrDeviceAnchorPersistenceANDROID)
xrCreateDeviceAnchorPersistenceANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrCreateDeviceAnchorPersistenceANDROID(
XrSession session,
const XrDeviceAnchorPersistenceCreateInfoANDROID* createInfo,
XrDeviceAnchorPersistenceANDROID* outHandle);
पैरामीटर की जानकारी
session, XrSession है, जो XrDeviceAnchorPersistenceANDROID बनाता है.createInfo, XrDeviceAnchorPersistenceCreateInfoANDROID है. इसमें XrDeviceAnchorPersistenceANDROID के लिए पैरामीटर होते हैं.outHandle, ऐसे हैंडल का पॉइंटर है जिसमें बनाया गया XrDeviceAnchorPersistenceANDROID दिखाया जाता है.
कोई ऐप्लिकेशन, xrCreateDeviceAnchorPersistenceANDROID को कॉल करके, XrDeviceAnchorPersistenceANDROID हैंडल बना सकता है. ऐंकर को बनाए रखने या हटाने के लिए, एपीआई कॉल के बाद XrDeviceAnchorPersistenceANDROID का इस्तेमाल किया जा सकता है. xrDestroyDeviceAnchorPersistenceANDROID फ़ंक्शन का इस्तेमाल करके, XrDeviceAnchorPersistenceANDROID हैंडल को आखिर में खाली करना ज़रूरी है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrCreateDeviceAnchorPersistenceANDROID को कॉल करने से पहले,
XR_ANDROID_device_anchor_persistenceएक्सटेंशन को चालू करना ज़रूरी है sessionयह एक मान्य XrSession हैंडल होना चाहिएcreateInfoयह, मान्य XrDeviceAnchorPersistenceCreateInfoANDROID स्ट्रक्चर का पॉइंटर होना चाहिएoutHandleXrDeviceAnchorPersistenceANDROID हैंडल का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHED
XrDeviceAnchorPersistenceCreateInfoANDROID स्ट्रक्चर को इस तरह परिभाषित किया गया है:
typedef struct XrDeviceAnchorPersistenceCreateInfoANDROID {
XrStructureType type;
void* next;
} XrDeviceAnchorPersistenceCreateInfoANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.
XrDeviceAnchorPersistenceCreateInfoANDROID स्ट्रक्चर, xrCreateDeviceAnchorPersistenceANDROID फ़ंक्शन में पास किए जाने पर, XrDeviceAnchorPersistenceANDROID बनाने के विकल्प उपलब्ध कराता है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrDeviceAnchorPersistenceCreateInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_device_anchor_persistenceएक्सटेंशन को चालू करना ज़रूरी है typeहोनी चाहिएXR_TYPE_DEVICE_ANCHOR_PERSISTENCE_CREATE_INFO_ANDROIDnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
xrDestroyDeviceAnchorPersistenceANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrDestroyDeviceAnchorPersistenceANDROID(
XrDeviceAnchorPersistenceANDROID handle);
पैरामीटर की जानकारी
handle, XrDeviceAnchorPersistenceANDROID हैंडल है, जिसे पहलेxrCreateDeviceAnchorPersistenceANDROIDने बनाया था.
xrDestroyDeviceAnchorPersistenceANDROID फ़ंक्शन, डिवाइस के ऐंकर के लिए बनाए गए, डेटा को सेव रखने वाले हैंडल को मिटा देता है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrDestroyDeviceAnchorPersistenceANDROID को कॉल करने से पहले,
XR_ANDROID_device_anchor_persistenceएक्सटेंशन को चालू करना ज़रूरी है handleयह एक मान्य XrDeviceAnchorPersistenceANDROID हैंडल होना चाहिए
थ्रेड की सुरक्षा
handleऔर किसी भी चाइल्ड हैंडल का ऐक्सेस, बाहरी तौर पर सिंक किया जाना चाहिए
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALID
एंकर को बनाए रखना
xrPersistAnchorANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrPersistAnchorANDROID(
XrDeviceAnchorPersistenceANDROID handle,
const XrPersistedAnchorSpaceInfoANDROID* persistedInfo,
XrUuidEXT* anchorIdOutput);
पैरामीटर की जानकारी
handle, XrDeviceAnchorPersistenceANDROID है.persistedInfo, XrPersistedAnchorSpaceInfoANDROID है, जिसमें ऐंकर के बने रहने के लिए पैरामीटर शामिल होते हैं.anchorIdOutput, XrUuidEXT का पॉइंटर है. इसमें सेव किए गए ऐंकर का यूनीक आइडेंटिफ़ायर (यूयूआईडी) दिखता है.
ऐप्लिकेशन, xrPersistAnchorANDROID को कॉल करके, ऐंकर को बनाए रखने का अनुरोध कर सकता है. ऐप्लिकेशन को यह नहीं मानना चाहिए कि रिटर्न वैल्यू के तौर पर 'सफ़लता' मिलने का मतलब है कि ऐंकर तुरंत सेव हो गया है. ऐप्लिकेशन को xrGetAnchorPersistStateANDROID का इस्तेमाल करके, ऐप्लिकेशन के बंद होने के बाद भी सेव रहने की स्थिति की जांच करनी चाहिए. इसके लिए, ऐप्लिकेशन को ऐप्लिकेशन बंद होने के बाद भी सेव रहने की स्थिति की जानकारी देने वाले ऐंकर XrUuidEXT का इस्तेमाल करना होगा. ऐप्लिकेशन, ऐंकर को अनपर्सिस्ट करने के लिए, xrUnpersistAnchorANDROID का इस्तेमाल कर सकता है.
- अगर कॉल के समय ऐंकर को ट्रैक नहीं किया जा रहा है, तो
XR_ERROR_ANCHOR_NOT_TRACKING_ANDROIDदिखाया जाएगा. - अगर सेव किया गया डेटा तैयार नहीं है, तो
XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROIDदिखाया जाएगा. - जब ऐंकर को बनाए रखने के लिए सूची में जोड़ दिया जाएगा, तब
XR_SUCCESSदिखाया जाएगा.
मान्य इस्तेमाल (इंप्लिसिट)
- xrPersistAnchorANDROID को कॉल करने से पहले,
XR_ANDROID_device_anchor_persistenceएक्सटेंशन को चालू करना ज़रूरी है handleयह एक मान्य XrDeviceAnchorPersistenceANDROID हैंडल होना चाहिएpersistedInfoयह किसी मान्य XrPersistedAnchorSpaceInfoANDROID स्ट्रक्चर का पॉइंटर होना चाहिएanchorIdOutputXrUuidEXT स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_ANCHOR_NOT_TRACKING_ANDROIDXR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHED
XrPersistedAnchorSpaceInfoANDROID स्ट्रक्चर को इस तरह परिभाषित किया गया है:
typedef struct XrPersistedAnchorSpaceInfoANDROID {
XrStructureType type;
void* next;
XrSpace anchor;
} XrPersistedAnchorSpaceInfoANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.anchorएक ऐंकर XrSpace है, जिसे पहले xrCreateAnchorSpaceANDROID की मदद से बनाया गया था, ताकि वह सेव रहे.
मान्य इस्तेमाल (इंप्लिसिट)
- XrPersistedAnchorSpaceInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_device_anchor_persistenceएक्सटेंशन को चालू करना ज़रूरी है typeहोनी चाहिएXR_TYPE_PERSISTED_ANCHOR_SPACE_INFO_ANDROIDnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिएanchorयह XrSpace का मान्य हैंडल होना चाहिए
xrGetAnchorPersistStateANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrGetAnchorPersistStateANDROID(
XrDeviceAnchorPersistenceANDROID handle,
const XrUuidEXT* anchorId,
XrAnchorPersistStateANDROID* persistState);
पैरामीटर की जानकारी
handle, XrDeviceAnchorPersistenceANDROID है.anchorId, ऐंकर का XrUuidEXT है.persistState, XrAnchorPersistStateANDROID का पॉइंटर है. इसमें ऐंकर की स्थिति दिखती है.- अगर ऐंकर XrUuidEXT नहीं मिलता है, तो
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROIDदिखेगा. - अगर
anchorIdका सेव किया गया डेटा तैयार नहीं है, तोXR_ERROR_PERSISTED_DATA_NOT_READY_ANDROIDदिखाया जाएगा.
मान्य इस्तेमाल (इंप्लिसिट)
- xrGetAnchorPersistStateANDROID को कॉल करने से पहले,
XR_ANDROID_device_anchor_persistenceएक्सटेंशन को चालू करना ज़रूरी है handleयह एक मान्य XrDeviceAnchorPersistenceANDROID हैंडल होना चाहिएanchorIdयह, मान्य XrUuidEXT स्ट्रक्चर का पॉइंटर होना चाहिएpersistStateXrAnchorPersistStateANDROID वैल्यू का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
XrAnchorPersistStateANDROID एनम को इस तरह परिभाषित किया गया है:
typedef enum XrAnchorPersistStateANDROID {
XR_ANCHOR_PERSIST_STATE_PERSIST_NOT_REQUESTED_ANDROID = 0,
XR_ANCHOR_PERSIST_STATE_PERSIST_PENDING_ANDROID = 1,
XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID = 2
} XrAnchorPersistStateANDROID;
Enum |
ब्यौरा |
|
ऐप्लिकेशन ने ऐंकर को बनाए रखने का अनुरोध नहीं किया है. |
|
ऐंकर को बनाए रखने का अनुरोध किया गया है, लेकिन इसे अभी तक बनाए नहीं रखा गया है. |
|
रनटाइम की मदद से, ऐंकर को सेव कर लिया गया है. |
सेव किए गए डेटा से ऐंकर बनाना
xrCreatePersistedAnchorSpaceANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrCreatePersistedAnchorSpaceANDROID(
XrDeviceAnchorPersistenceANDROID handle,
const XrPersistedAnchorSpaceCreateInfoANDROID* createInfo,
XrSpace* anchorOutput);
पैरामीटर की जानकारी
handle, XrDeviceAnchorPersistenceANDROID है.createInfo, XrPersistedAnchorSpaceCreateInfoANDROID है. इसमें ऐंकर बनाने के लिए पैरामीटर होते हैं.anchorOutput, XrSpace का पॉइंटर है, जिसमें नया ऐंकर स्पेस दिखाया जाता है.
ऐप्लिकेशन, पहले से सेव किए गए ऐंकर से XrSpace ऐंकर बना सकता है. इसके लिए, उसी XrUuidEXT के साथ xrCreatePersistedAnchorSpaceANDROID को कॉल करना होगा. XR_ANDROID_trackables में बताए गए तरीके के अलावा, ऐंकर बनाने का यह एक और तरीका है.
- अगर ऐंकर XrUuidEXT नहीं मिलता है, तो
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROIDदिखेगा.
मान्य इस्तेमाल (इंप्लिसिट)
- xrCreatePersistedAnchorSpaceANDROID को कॉल करने से पहले,
XR_ANDROID_device_anchor_persistenceएक्सटेंशन को चालू करना ज़रूरी है handleयह एक मान्य XrDeviceAnchorPersistenceANDROID हैंडल होना चाहिएcreateInfoयह किसी मान्य XrPersistedAnchorSpaceCreateInfoANDROID स्ट्रक्चर का पॉइंटर होना चाहिएanchorOutputको XrSpace हैंडल का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROIDXR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
XrPersistedAnchorSpaceCreateInfoANDROID स्ट्रक्चर को इस तरह से परिभाषित किया गया है:
typedef struct XrPersistedAnchorSpaceCreateInfoANDROID {
XrStructureType type;
void* next;
XrUuidEXT anchorId;
} XrPersistedAnchorSpaceCreateInfoANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.anchorId, सेव किए गए ऐंकर का XrUuidEXT होता है. इससे ऐंकर XrSpace बनाया जाता है.
XrPersistedAnchorSpaceCreateInfoANDROID स्ट्रक्चर, xrCreateDeviceAnchorPersistenceANDROID फ़ंक्शन में पास किए जाने पर, ऐंकर बनाने के विकल्प उपलब्ध कराता है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrPersistedAnchorSpaceCreateInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_device_anchor_persistenceएक्सटेंशन को चालू करना ज़रूरी है typeहोनी चाहिएXR_TYPE_PERSISTED_ANCHOR_SPACE_CREATE_INFO_ANDROIDnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
सेव किए गए ऐंकर की संख्या
xrEnumeratePersistedAnchorsANDROID फ़ंक्शन को इस तरह परिभाषित किया गया है:
XrResult xrEnumeratePersistedAnchorsANDROID(
XrDeviceAnchorPersistenceANDROID handle,
uint32_t anchorIdsCapacityInput,
uint32_t* anchorIdsCountOutput,
XrUuidEXT* anchorIds);
पैरामीटर की जानकारी
handle, XrDeviceAnchorPersistenceANDROID है.anchorIdsCapacityInput,anchorIdsकलेक्शन की क्षमता है या ज़रूरी क्षमता पाने के अनुरोध के लिए 0.anchorIdsCountOutput, लिखे गएanchorIdsकी संख्या का पॉइंटर है. इसके अलावा, अगरanchorIdsCapacityInputकी संख्या काफ़ी नहीं है, तोanchorIdsCountOutputज़रूरी क्षमता का पॉइंटर है.anchorIds, XrUuidEXT स्ट्रक्चर के कलेक्शन का पॉइंटर है. अगरanchorIdsCapacityInput0 है, तो यहNULLहो सकता है.- ज़रूरी
anchorIdsसाइज़ को वापस पाने के बारे में पूरी जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, xrEnumeratePersistedAnchorsANDROID को कॉल करके, सेव किए गए सभी मौजूदा ऐंकर की सूची बन सकता है. anchorIds में, सेव किए गए ऐंकर के यूयूआईडी को तब तक सेव किया जाएगा, जब तक कि कलेक्शन में जगह है. अगर कैपेसिटी कम है, तो ऐप्लिकेशन को यह पक्का नहीं होता कि कौनसे ऐंकर दिखाए जाएंगे.
मान्य इस्तेमाल (इंप्लिसिट)
- xrEnumeratePersistedAnchorsANDROID को कॉल करने से पहले,
XR_ANDROID_device_anchor_persistenceएक्सटेंशन को चालू करना ज़रूरी है handleयह एक मान्य XrDeviceAnchorPersistenceANDROID हैंडल होना चाहिएanchorIdsCountOutput,uint32_tवैल्यू का पॉइंटर होना चाहिए- अगर
anchorIdsCapacityInput,0, anchorIdsनहीं है, तो यहanchorIdsCapacityInputXrUuidEXT स्ट्रक्चर के ऐरे के पॉइंटर होना ज़रूरी है
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROIDXR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENT
सेव किए गए ऐंकर को अनसेव करना
xrUnpersistAnchorANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrUnpersistAnchorANDROID(
XrDeviceAnchorPersistenceANDROID handle,
const XrUuidEXT* anchorId);
पैरामीटर की जानकारी
handle, XrDeviceAnchorPersistenceANDROID है.anchorId, अनपर्सिस्ट किए जाने वाले ऐंकर का XrUuidEXT है.
ऐप्लिकेशन, xrUnpersistAnchorANDROID को कॉल करके, सेव किए गए किसी ऐंकर को अनपर्सिस्ट कर सकता है. इसके लिए, ऐंकर को अनपर्सिस्ट करने के लिए, ऐंकर का XrUuidEXT पास करना होगा.
- अगर सेव किया गया डेटा तैयार नहीं है, तो
XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROIDदिखाया जाएगा. - अगर ऐंकर XrUuidEXT नहीं मिलता है, तो
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROIDदिखेगा.
मान्य इस्तेमाल (इंप्लिसिट)
- xrUnpersistAnchorANDROID को कॉल करने से पहले,
XR_ANDROID_device_anchor_persistenceएक्सटेंशन को चालू करना ज़रूरी है handleयह एक मान्य XrDeviceAnchorPersistenceANDROID हैंडल होना चाहिएanchorIdयह, मान्य XrUuidEXT स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROIDXR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
ऐंकर पेज को सेव रखने के लिए कोड का उदाहरण
यहां दिए गए उदाहरण में, सिस्टम की क्षमता की जांच करने, ऐंकर को सेव करने, उनकी गिनती करने, और उन्हें अनसेव करने का तरीका बताया गया है. साथ ही, सेव किए गए ऐंकर XrUuidEXT से ऐंकर बनाने का तरीका भी बताया गया है.
XrSession session; // previously initialized
XrSpace anchor; // previously initialized
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrEnumerateSupportedPersistenceAnchorTypesANDROID xrEnumerateSupportedPersistenceAnchorTypesANDROID; // previously initialized
PFN_xrCreateDeviceAnchorPersistenceANDROID xrCreateDeviceAnchorPersistenceANDROID; // previously initialized
PFN_xrDestroyDeviceAnchorPersistenceANDROID xrDestroyDeviceAnchorPersistenceANDROID; // previously initialized
PFN_xrPersistAnchorANDROID xrPersistAnchorANDROID; // previously initialized
PFN_xrGetAnchorPersistStateANDROID xrGetAnchorPersistStateANDROID; // previously initialized
PFN_xrCreatePersistedAnchorSpaceANDROID xrCreatePersistedAnchorSpaceANDROID; // previously initialized
PFN_xrEnumeratePersistedAnchorsANDROID xrEnumeratePersistedAnchorsANDROID; // previously initialized
PFN_xrUnpersistAnchorANDROID xrUnpersistAnchorANDROID; // previously initialized
// Create a device anchor persistence handle
XrDeviceAnchorPersistenceCreateInfoANDROID persistenceHandleCreateInfo;
persistenceHandleCreateInfo.type = XR_TYPE_DEVICE_ANCHOR_PERSISTENCE_CREATE_INFO_ANDROID;
persistenceHandleCreateInfo.next = nullptr;
XrDeviceAnchorPersistenceANDROID persistenceHandle;
CHK_XR(xrCreateDeviceAnchorPersistenceANDROID(session, &persistenceHandleCreateInfo, &persistenceHandle));
/// Persist an anchor
XrPersistedAnchorSpaceInfo anchorSpaceInfo;
anchorSpaceInfo.type = XR_TYPE_PERSISTED_ANCHOR_SPACE_INFO_ANDROID;
anchorSpaceInfo.next = nullptr;
anchorSpaceInfo.anchor = anchor;
XrUuidEXT anchorId;
do {
XrResult result = xrPersistAnchorANDROID(
persistenceHandle, &anchorSpaceInfo, &anchorId);
} while (result == XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID ||
result == XR_ERROR_ANCHOR_NOT_TRACKING_ANDROID);
if (result != XR_SUCCESS) {
// Handle errors
}
// ... Update loop ...
// Poll for anchor persist state to confirm if it was successfully persisted
XrAnchorPersistStateANDROID persistState;
CHK_XR(xrGetAnchorPersistStateANDROID(persistenceHandle, &anchorId, &persistState));
if (persistState == XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID) {
// The anchor was persisted successfully
}
// Enumerate all persisted anchors
uint32_t anchorCountOutput = 0;
std::vector<XrUuidEXT> allAnchors;
CHK_XR(xrEnumeratePersistedAnchorsANDROID(
persistenceHandle,
anchorCountOutput,
&anchorCountOutput,
nullptr
));
allAnchors.resize(anchorCountOutput, XR_NULL_HANDLE);
// Fetch the actual anchors in an appropriately resized array.
CHK_XR(xrEnumeratePersistedAnchorsANDROID(
persistenceHandle,
anchorCountOutput,
&anchorCountOutput,
allAnchors.data()
));
// Creating an anchor from a previously persisted anchor using its UUID
XrTime updateTime; // Time used for the current frame's simulation update.
XrUuidEXT anchorId = allAnchors[0];
XrPersistedAnchorSpaceCreateInfo createInfo;
createInfo.type = XR_TYPE_PERSISTED_ANCHOR_CREATE_INFO_ANDROID;
createInfo.next = nullptr;
createInfo.anchorId = anchorId;
XrSpace anchorSpace = XR_NULL_HANDLE;
CHK_XR(xrCreatePersistedAnchorSpaceANDROID(
persistenceHandle,
&createInfo,
&anchorSpace
));
// The anchor was found and retrieved from the local device successfully.
XrSpaceLocation anchorLocation = { XR_TYPE_SPACE_LOCATION };
CHK_XR(xrLocateSpace(anchorSpace, appSpace, updateTime, &anchorLocation));
XrPosef pose = anchorLocation.pose;
// Unpersist the anchor
do {
XrResult result = xrUnpersistAnchorANDROID(persistenceHandle, &anchorId);
} while (result == XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID);
if (result != XR_SUCCESS) {
// Handle errors
}
// Once app is done with all persistence related tasks
CHK_XR(xrDestroySpace(anchorSpace));
CHK_XR(xrDestroyDeviceAnchorPersistenceANDROID(persistenceHandle));
नए ऑब्जेक्ट टाइप
नई Enum Constant
XrObjectType एनोटेशन को इनके साथ जोड़ा गया है:
XR_OBJECT_TYPE_DEVICE_ANCHOR_PERSISTENCE_ANDROID
XrResult एनोटेशन को इनके साथ जोड़ा गया है:
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROIDXR_ERROR_ANCHOR_ALREADY_PERSISTED_ANDROIDXR_ERROR_ANCHOR_NOT_TRACKING_ANDROIDXR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
XrStructureType एनोटेशन को इनके साथ जोड़ा गया है:
XR_TYPE_PERSISTED_ANCHOR_ANDROIDXR_TYPE_PERSISTED_ANCHOR_SPACE_CREATE_INFO_ANDROIDXR_TYPE_PERSISTED_ANCHOR_SPACE_INFO_ANDROIDXR_TYPE_DEVICE_ANCHOR_PERSISTENCE_CREATE_INFO_ANDROID
नए Enums
नए स्ट्रक्चर
- XrDeviceAnchorPersistenceCreateInfoANDROID
- XrPersistedAnchorSpaceCreateInfoANDROID
- XrPersistedAnchorSpaceInfoANDROID
- XrSystemDeviceAnchorPersistencePropertiesANDROID
नए फ़ंक्शन
- xrEnumerateSupportedPersistenceAnchorTypesANDROID
- xrCreateDeviceAnchorPersistenceANDROID
- xrDestroyDeviceAnchorPersistenceANDROID
- xrPersistAnchorANDROID
- xrGetAnchorPersistStateANDROID
- xrCreatePersistedAnchorSpaceANDROID
- xrEnumeratePersistedAnchorsANDROID
- xrUnpersistAnchorANDROID
समस्याएं
वर्शन का इतिहास
- पहला बदलाव, 10-10-2024 (केनी वर्कमेयर)
- एक्सटेंशन के बारे में शुरुआती जानकारी
OpenXR™ और OpenXR लोगो, The Khronos Group Inc. के मालिकाना हक वाले ट्रेडमार्क हैं. ये चीन, यूरोपीय संघ, जापान, और यूनाइटेड किंगडम में ट्रेडमार्क के तौर पर रजिस्टर किए गए हैं.