إضافة OpenXR‏ XR_ANDROID_device_anchor_persistence

سلسلة الاسم

XR_ANDROID_device_anchor_persistence

نوع الإضافة

إضافة مثيل

رقم الإضافة المسجَّل

458

المراجعة

1

التبعيات المتعلّقة بالإصدارات والإضافات

XR_EXT_uuid وXR_ANDROID_trackables

تاريخ آخر تعديل

2024-10-10

حالة عنوان IP

ما مِن مطالبات معروفة بعناوين IP.

المساهمون

نيهاف جاين، Google

ليفانا تشين، Google

سبنسر كوين، Google

"كيني فيركامر"، Google

نظرة عامة

تسمح هذه الإضافة للتطبيق بحفظ علامات الربط واستعادتها وإلغاء حفظها على الجهاز الحالي للمستخدم الحالي، على مستوى التطبيقات وجلسات الجهاز.

فحص قدرة النظام

يتم تعريف بنية XrSystemDeviceAnchorPersistencePropertiesANDROID على النحو التالي:

typedef struct XrSystemDeviceAnchorPersistencePropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsAnchorPersistence;
} XrSystemDeviceAnchorPersistencePropertiesANDROID;

أوصاف الأعضاء

  • type هو XrStructureType لهذه البنية.
  • next هو NULL أو مؤشر إلى البنية التالية في سلسلة البنية. لا يتم تعريف مثل هذه الهياكل في OpenXR الأساسية أو هذه الإضافة.
  • supportsAnchorPersistence هو XrBool32 يشير إلى ما إذا كان النظام الحالي يتيح ثبات العناصر الثابتة للعناصر الثابتة المكانية.

يمكن للتطبيق التحقّق مما إذا كان النظام قادرًا على الاحتفاظ بعلامات الربط المكانية (راجِع xrCreateAnchorSpaceANDROID) من خلال توسيع XrSystemProperties باستخدام بنية XrSystemDeviceAnchorPersistencePropertiesANDROID عند استدعاء xrGetSystemProperties. بالنسبة إلى العلامات التتبُّعية المتوافقة، يمكن للتطبيق استخدام xrEnumerateSupportedPersistenceAnchorTypesANDROID لطلب عناوين الأنواع المتوافقة.

إذا تم عرض XR_FALSE لـ supportsAnchorPersistence، سيتم عرض 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 ل retrieving the required capacity.
  • trackableTypeCountOutput هو مؤشر إلى عدد عناصر المصفوفة، أو مؤشر إلى السعة المطلوبة في حال كانت trackableTypeCapacityInput غير كافية.
  • trackableTypes هو مؤشر إلى صفيف من XrTrackableTypeANDROID، ولكن يمكن أن يكون NULL إذا كان trackableTypeCapacityInput هو 0.
  • اطّلِع على قسم مَعلمات حجم ذاكرة التخزين المؤقت للحصول على وصف تفصيلي لاسترداد حجم trackableTypes المطلوب.

يمكن للتطبيق استخدام xrEnumerateSupportedPersistenceAnchorTypesANDROID للتحقّق من توفّر ميزة ثبات الربط في XrTrackableTypeANDROID وغيرها من العناصر القابلة للتتبّع.

إذا لم يتم عرض قيمة معيّنة من نوع XrTrackableTypeANDROID في صفيف trackableTypes، سيتم عرض قيمة XR_ERROR_FEATURE_UNSUPPORTED من وظائف تداوم تثبيت عنصر التثبيت للجهاز التي تعمل على عنصر تثبيت من هذا النوع.

الاستخدام الصالح (ضمني)

رموز الإرجاع

تم بنجاح

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

أوصاف المَعلمات

يمكن للتطبيق إنشاء معرّف XrDeviceAnchorPersistenceANDROID من خلال استدعاء xrCreateDeviceAnchorPersistenceANDROID. يمكن استخدام XrDeviceAnchorPersistenceANDROID في طلبات البيانات اللاحقة من واجهة برمجة التطبيقات للحفاظ على ثبات نقاط الربط أو إلغاء ثباتها. يجب في النهاية إلغاء تخصيص معرّف XrDeviceAnchorPersistenceANDROID باستخدام الدالة xrDestroyDeviceAnchorPersistenceANDROID.

الاستخدام الصالح (ضمني)

رموز الإرجاع

تم بنجاح

  • 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 خيارات إنشاء XrDeviceAnchorPersistenceANDROID عند تمريرها إلى xrCreateDeviceAnchorPersistenceANDROID.

الاستخدام الصالح (ضمني)

يتم تحديد دالة xrDestroyDeviceAnchorPersistenceANDROID على النحو التالي:

XrResult xrDestroyDeviceAnchorPersistenceANDROID(
    XrDeviceAnchorPersistenceANDROID            handle);

أوصاف المَعلمات

تؤدي الدالة xrDestroyDeviceAnchorPersistenceANDROID إلى تدمير معرّف الاحتفاظ ببيانات الربط بالجهاز.

الاستخدام الصالح (ضمني)

أمان سلسلة المحادثات

  • يجب مزامنة الوصول إلى handle وأيّ أسماء معرِّفة فرعية خارجيًا.

رموز الإرجاع

تم بنجاح

  • XR_SUCCESS

تعذّر الإجراء

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

الاحتفاظ بعلامة الارتساء

يتم تعريف الدالة xrPersistAnchorANDROID على النحو التالي:

XrResult xrPersistAnchorANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    const XrPersistedAnchorSpaceInfoANDROID*    persistedInfo,
    XrUuidEXT*                                  anchorIdOutput);

أوصاف المَعلمات

يمكن للتطبيق طلب الاحتفاظ بالعناصر الأساسية من خلال استدعاء دالة 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 يتم من خلاله عرض حالة العنصر المرجعي.
  • سيتم عرض XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID في حال عدم العثور على العنصر الثابت XrUuidEXT.
  • سيتم عرض XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID إذا كانت البيانات الثابتة لـ anchorId غير جاهزة.

الاستخدام الصالح (ضمني)

رموز الإرجاع

تم بنجاح

  • 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

لم يطلب التطبيق الاحتفاظ بـ Anchor.

XR_ANCHOR_PERSIST_STATE_PERSIST_PENDING_ANDROID

تم طلب الاحتفاظ بـ Anchor، ولكن لم يتم الاحتفاظ به بعد.

XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID

تم الاحتفاظ بالإشارة بنجاح من خلال وقت التشغيل.

إنشاء عنصر ربط من البيانات الثابتة

يتم تعريف الدالة xrCreatePersistedAnchorSpaceANDROID على النحو التالي:

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

أوصاف المَعلمات

يمكن للتطبيق إنشاء عنصر تثبيت XrSpace من XrAnchor تم حفظه سابقًا من خلال استدعاء xrCreatePersistedAnchorSpaceANDROID باستخدامXrUuidEXT نفسه. هذه طريقة أخرى لإنشاء عناصر الربط كما هو محدّد في XR_ANDROID_trackables.

  • سيتم عرض XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID في حال عدم العثور على العنصر الثابت 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

يتم تحديد بنية XrPersistedAnchorSpaceCreateInfoANDROID على النحو التالي:

typedef struct XrPersistedAnchorSpaceCreateInfoANDROID {
    XrStructureType    type;
    void*              next;
    XrUuidEXT          anchorId;
} XrPersistedAnchorSpaceCreateInfoANDROID;

أوصاف الأعضاء

  • type هو XrStructureType لهذه البنية.
  • next هو NULL أو مؤشر إلى البنية التالية في سلسلة البنية. لا يتم تعريف مثل هذه الهياكل في OpenXR الأساسية أو هذه الإضافة.
  • anchorId هو XrUuidEXT للعنصر الثابت لإنشاء XrSpace منه.

توفّر بنية XrPersistedAnchorSpaceCreateInfoANDROID options لإنشاء العنصر الأساسي عند تمريرها إلى xrCreateDeviceAnchorPersistenceANDROID.

الاستخدام الصالح (ضمني)

تعداد نقاط الربط الثابتة

يتم تعريف الدالة xrEnumeratePersistedAnchorsANDROID على النحو التالي:

XrResult xrEnumeratePersistedAnchorsANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    uint32_t                                    anchorIdsCapacityInput,
    uint32_t*                                   anchorIdsCountOutput,
    XrUuidEXT*                                  anchorIds);

أوصاف المَعلمات

  • handle هو XrDeviceAnchorPersistenceANDROID.
  • anchorIdsCapacityInput هي سعة صفيف anchorIds، أو 0 لتحديد طلب لاسترداد السعة المطلوبة.
  • anchorIdsCountOutput هو مؤشر إلى عدد anchorIds التي تمّت كتابتها، أو هو مؤشر إلى السعة المطلوبة في حال كانت anchorIdsCapacityInput غير كافية.
  • anchorIds هو مؤشر إلى صفيف من هياكل XrUuidEXT. يمكن أن تكون NULL إذا كانت anchorIdsCapacityInput تساوي 0.
  • اطّلِع على قسم مَعلمات حجم ذاكرة التخزين المؤقت للحصول على وصف تفصيلي لاسترداد حجم anchorIds المطلوب.

يجوز للتطبيق سرد جميع نقاط الربط الحالية الثابتة من خلال استدعاء xrEnumeratePersistedAnchorsANDROID. سيحتوي anchorIds على ملف شخصي يضمّ عناوين قاعدة البيانات الثابتة التي تبلغ سعة المصفوفة. إذا كانت السعة غير كافية، لا تضمن التطبيقات العناصر التي يتم عرضها.

الاستخدام الصالح (ضمني)

رموز الإرجاع

تم بنجاح

  • 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 إذا كانت البيانات الثابتة غير جاهزة.
  • سيتم عرض XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID في حال عدم العثور على العنصر الثابت 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));

أنواع العناصر الجديدة

ثوابت قائمة التعداد الجديدة

تم توسيع قائمة 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

عمليات التعداد الجديدة

التصاميم الجديدة

الدوالّ الجديدة

المشاكل

سجلّ الإصدارات

  • النسخة 1، ‎10-10-2024 (كيني فيركمير)
    • الوصف الأولي للإضافة