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_ANDROID
next
NULL
या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
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 के ऐरे का पॉइंटर है. हालांकि, अगरtrackableTypeCapacityInput
0
है, तोtrackableTypes
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_INVALID
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SIZE_INSUFFICIENT
XR_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 स्ट्रक्चर का पॉइंटर होना चाहिएoutHandle
, XrDeviceAnchorPersistenceANDROID हैंडल का पॉइंटर होना ज़रूरी है
रिटर्न कोड
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_OUT_OF_MEMORY
XR_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_ANDROID
next
NULL
या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
xrDestroyDeviceAnchorPersistenceANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrDestroyDeviceAnchorPersistenceANDROID(
XrDeviceAnchorPersistenceANDROID handle);
पैरामीटर की जानकारी
handle
, XrDeviceAnchorPersistenceANDROID हैंडल है, जिसे पहलेxrCreateDeviceAnchorPersistenceANDROID
ने बनाया था.
xrDestroyDeviceAnchorPersistenceANDROID फ़ंक्शन, डिवाइस के ऐंकर के लिए बनाए गए, डेटा को सेव रखने वाले हैंडल को मिटा देता है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrDestroyDeviceAnchorPersistenceANDROID को कॉल करने से पहले,
XR_ANDROID_device_anchor_persistence
एक्सटेंशन को चालू करना ज़रूरी है handle
यह एक मान्य XrDeviceAnchorPersistenceANDROID हैंडल होना चाहिए
थ्रेड की सुरक्षा
handle
और किसी भी चाइल्ड हैंडल का ऐक्सेस, बाहरी तौर पर सिंक किया जाना चाहिए
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTED
XR_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_SUCCESS
दिखाया जाएगा.
मान्य इस्तेमाल (इंप्लिसिट)
- xrPersistAnchorANDROID को कॉल करने से पहले,
XR_ANDROID_device_anchor_persistence
एक्सटेंशन को चालू करना ज़रूरी है handle
यह एक मान्य XrDeviceAnchorPersistenceANDROID हैंडल होना चाहिएpersistedInfo
एक मान्य XrPersistedAnchorSpaceInfoANDROID स्ट्रक्चर का पॉइंटर होना चाहिएanchorIdOutput
XrUuidEXT स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_ANCHOR_NOT_TRACKING_ANDROID
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_OUT_OF_MEMORY
XR_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_ANDROID
next
NULL
या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए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 स्ट्रक्चर का पॉइंटर होना चाहिएpersistState
XrAnchorPersistStateANDROID वैल्यू का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_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_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_OUT_OF_MEMORY
XR_ERROR_LIMIT_REACHED
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
XR_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_ANDROID
next
NULL
या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
सेव किए गए ऐंकर की संख्या
xrEnumeratePersistedAnchorsANDROID फ़ंक्शन को इस तरह परिभाषित किया गया है:
XrResult xrEnumeratePersistedAnchorsANDROID(
XrDeviceAnchorPersistenceANDROID handle,
uint32_t anchorIdsCapacityInput,
uint32_t* anchorIdsCountOutput,
XrUuidEXT* anchorIds);
पैरामीटर की जानकारी
handle
, XrDeviceAnchorPersistenceANDROID है.anchorIdsCapacityInput
,anchorIds
कलेक्शन की क्षमता है या ज़रूरी क्षमता पाने के अनुरोध के लिए 0.anchorIdsCountOutput
, लिखे गएanchorIds
की संख्या का पॉइंटर है. इसके अलावा, अगरanchorIdsCapacityInput
की संख्या काफ़ी नहीं है, तोanchorIdsCountOutput
ज़रूरी क्षमता का पॉइंटर है.anchorIds
, XrUuidEXT स्ट्रक्चर के कलेक्शन का पॉइंटर है. अगरanchorIdsCapacityInput
0 है, तो यहNULL
हो सकता है.- ज़रूरी
anchorIds
साइज़ को वापस पाने के बारे में पूरी जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, xrEnumeratePersistedAnchorsANDROID को कॉल करके, सेव किए गए सभी मौजूदा ऐंकर की सूची बन सकता है. anchorIds
में, सेव किए गए ऐंकर के यूनीक आइडेंटिफ़ायर (यूयूआईडी) को तब तक सेव किया जाएगा, जब तक कि कलेक्शन में जगह है. अगर कैपेसिटी कम है, तो ऐप्लिकेशन को यह पक्का नहीं होता कि कौनसे ऐंकर दिखाए जाएंगे.
मान्य इस्तेमाल (इंप्लिसिट)
- xrEnumeratePersistedAnchorsANDROID को कॉल करने से पहले,
XR_ANDROID_device_anchor_persistence
एक्सटेंशन को चालू करना ज़रूरी है handle
यह एक मान्य XrDeviceAnchorPersistenceANDROID हैंडल होना चाहिएanchorIdsCountOutput
,uint32_t
वैल्यू का पॉइंटर होना चाहिए- अगर
anchorIdsCapacityInput
,0, anchorIds
नहीं है, तो यहanchorIdsCapacityInput
XrUuidEXT स्ट्रक्चर के ऐरे के पॉइंटर होना ज़रूरी है
रिटर्न कोड
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_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_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_OUT_OF_MEMORY
XR_ERROR_LIMIT_REACHED
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
XR_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;
CHK_XR(xrPersistAnchorANDROID(persistenceHandle, &anchorSpaceInfo, &anchorId));
// ... 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;
// 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_ANDROID
XR_ERROR_ANCHOR_ALREADY_PERSISTED_ANDROID
XR_ERROR_ANCHOR_NOT_TRACKING_ANDROID
XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
XrStructureType एनोटेशन को इनके साथ जोड़ा गया है:
XR_TYPE_PERSISTED_ANCHOR_ANDROID
XR_TYPE_PERSISTED_ANCHOR_SPACE_CREATE_INFO_ANDROID
XR_TYPE_PERSISTED_ANCHOR_SPACE_INFO_ANDROID
XR_TYPE_DEVICE_ANCHOR_PERSISTENCE_CREATE_INFO_ANDROID
नए Enums
नए स्ट्रक्चर
- XrDeviceAnchorPersistenceCreateInfoANDROID
- XrPersistedAnchorSpaceCreateInfoANDROID
- XrPersistedAnchorSpaceInfoANDROID
- XrSystemDeviceAnchorPersistencePropertiesANDROID
नए फ़ंक्शन
- xrEnumerateSupportedPersistenceAnchorTypesANDROID
- xrCreateDeviceAnchorPersistenceANDROID
- xrDestroyDeviceAnchorPersistenceANDROID
- xrPersistAnchorANDROID
- xrGetAnchorPersistStateANDROID
- xrCreatePersistedAnchorSpaceANDROID
- xrEnumeratePersistedAnchorsANDROID
- xrUnpersistAnchorANDROID
समस्याएं
वर्शन का इतिहास
- पहला बदलाव, 10-10-2024 (केनी वर्कमेयर)
- एक्सटेंशन के बारे में शुरुआती जानकारी