XR_ANDROID_device_anchor_persistence OpenXR एक्सटेंशन

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 दिखाया जाएगा.

मान्य इस्तेमाल (इंप्लिसिट)

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);

पैरामीटर की जानकारी

कोई ऐप्लिकेशन, xrCreateDeviceAnchorPersistenceANDROID को कॉल करके, XrDeviceAnchorPersistenceANDROID हैंडल बना सकता है. ऐंकर को सेव या अनसेव करने के लिए, एपीआई कॉल के बाद XrDeviceAnchorPersistenceANDROID का इस्तेमाल किया जा सकता है. xrDestroyDeviceAnchorPersistenceANDROID फ़ंक्शन का इस्तेमाल करके, 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 बनाने के विकल्प उपलब्ध कराता है.

मान्य इस्तेमाल (इंप्लिसिट)

xrDestroyDeviceAnchorPersistenceANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:

XrResult xrDestroyDeviceAnchorPersistenceANDROID(
    XrDeviceAnchorPersistenceANDROID            handle);

पैरामीटर की जानकारी

  • handle, XrDeviceAnchorPersistenceANDROID हैंडल है, जिसे पहले xrCreateDeviceAnchorPersistenceANDROID ने बनाया था.

xrDestroyDeviceAnchorPersistenceANDROID फ़ंक्शन, डिवाइस के ऐंकर के लिए बनाए गए, डेटा को सेव रखने वाले हैंडल को मिटा देता है.

मान्य इस्तेमाल (इंप्लिसिट)

थ्रेड की सुरक्षा

  • 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 दिखाया जाएगा.

मान्य इस्तेमाल (इंप्लिसिट)

रिटर्न कोड

सफलता

  • 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 से बनाया गया था, ताकि वह सेव रहे.

मान्य इस्तेमाल (इंप्लिसिट)

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 दिखाया जाएगा.

मान्य इस्तेमाल (इंप्लिसिट)

रिटर्न कोड

सफलता

  • 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

ब्यौरा

XR_ANCHOR_PERSIST_STATE_PERSIST_NOT_REQUESTED_ANDROID

ऐप्लिकेशन ने ऐंकर को बनाए रखने का अनुरोध नहीं किया है.

XR_ANCHOR_PERSIST_STATE_PERSIST_PENDING_ANDROID

ऐंकर को बनाए रखने का अनुरोध किया गया है, लेकिन इसे अभी तक बनाए नहीं रखा गया है.

XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID

रनटाइम की मदद से, ऐंकर को सेव कर लिया गया है.

सेव किए गए डेटा से ऐंकर बनाना

xrCreatePersistedAnchorSpaceANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:

XrResult xrCreatePersistedAnchorSpaceANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    const XrPersistedAnchorSpaceCreateInfoANDROID* createInfo,
    XrSpace*                                    anchorOutput);

पैरामीटर की जानकारी

ऐप्लिकेशन, पहले से सेव किए गए ऐंकर से XrSpace ऐंकर बना सकता है. इसके लिए, उसी XrUuidEXT के साथ xrCreatePersistedAnchorSpaceANDROID को कॉल करना होगा. XR_ANDROID_trackables में बताए गए तरीके के अलावा, ऐंकर बनाने का यह एक और तरीका है.

  • अगर ऐंकर XrUuidEXT नहीं मिलता है, तो XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID दिखाया जाएगा.

मान्य इस्तेमाल (इंप्लिसिट)

रिटर्न कोड

सफलता

  • 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 फ़ंक्शन में पास किए जाने पर, ऐंकर बनाने के विकल्प उपलब्ध कराता है.

मान्य इस्तेमाल (इंप्लिसिट)

सेव किए गए ऐंकर की संख्या

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);

पैरामीटर की जानकारी

ऐप्लिकेशन, xrUnpersistAnchorANDROID को कॉल करके, सेव किए गए किसी ऐंकर को अनपर्सिस्ट कर सकता है. इसके लिए, ऐंकर को अनपर्सिस्ट करने के लिए, ऐंकर का XrUuidEXT पास करना होगा.

  • अगर सेव किया गया डेटा तैयार नहीं है, तो XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID दिखाया जाएगा.
  • अगर ऐंकर XrUuidEXT नहीं मिलता है, तो XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID दिखाया जाएगा.

मान्य इस्तेमाल (इंप्लिसिट)

रिटर्न कोड

सफलता

  • 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

नए स्ट्रक्चर

नए फ़ंक्शन

समस्याएं

वर्शन का इतिहास

  • पहला बदलाव, 10-10-2024 (केनी वर्कमेयर)
    • एक्सटेंशन के बारे में शुरुआती जानकारी