سلسلة الاسم
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
من وظائف ثبات
تثبيت الجهاز التي تعمل على تثبيت مكاني.
الاستخدام الصالح (ضمني)
- يجب تفعيل إضافة
XR_ANDROID_device_anchor_persistence
قبل استخدام XrSystemDeviceAnchorPersistencePropertiesANDROID. 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 ل retrieving the required capacity. trackableTypeCountOutput
هو مؤشر إلى عدد عناصر المصفوفة، أو مؤشر إلى السعة المطلوبة في حال كانتtrackableTypeCapacityInput
غير كافية.trackableTypes
هو مؤشر إلى صفيف من XrTrackableTypeANDROID، ولكن يمكن أن يكونNULL
إذا كانtrackableTypeCapacityInput
هو0
.- اطّلِع على قسم مَعلمات حجم ذاكرة التخزين المؤقت للحصول على وصف تفصيلي
لاسترداد حجم
trackableTypes
المطلوب.
يمكن للتطبيق استخدام xrEnumerateSupportedPersistenceAnchorTypesANDROID للتحقّق من توفّر ميزة ثبات الربط في XrTrackableTypeANDROID وغيرها من العناصر القابلة للتتبّع.
إذا لم يتم عرض قيمة معيّنة من نوع
XrTrackableTypeANDROID في صفيف trackableTypes
، سيتم عرض قيمة
XR_ERROR_FEATURE_UNSUPPORTED
من وظائف تداوم
تثبيت عنصر التثبيت للجهاز التي تعمل على عنصر تثبيت من هذا النوع.
الاستخدام الصالح (ضمني)
- يجب تفعيل امتداد
XR_ANDROID_device_anchor_persistence
قبل استدعاء xrEnumerateSupportedPersistenceAnchorTypesANDROID. 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.
يمكن للتطبيق إنشاء معرّف XrDeviceAnchorPersistenceANDROID من خلال استدعاء xrCreateDeviceAnchorPersistenceANDROID. يمكن استخدام XrDeviceAnchorPersistenceANDROID في طلبات البيانات اللاحقة من واجهة برمجة التطبيقات للحفاظ على ثبات نقاط الربط أو إلغاء ثباتها. يجب في النهاية إلغاء تخصيص المساحة المخصّصة لمعرّف XrDeviceAnchorPersistenceANDROID باستخدام الدالة xrDestroyDeviceAnchorPersistenceANDROID.
الاستخدام الصالح (ضمني)
- يجب تفعيل إضافة
XR_ANDROID_device_anchor_persistence
قبل استدعاء xrCreateDeviceAnchorPersistenceANDROID. 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 خيارات إنشاء XrDeviceAnchorPersistenceANDROID عند تمريرها إلى xrCreateDeviceAnchorPersistenceANDROID.
الاستخدام الصالح (ضمني)
- يجب تفعيل إضافة
XR_ANDROID_device_anchor_persistence
قبل استخدام XrDeviceAnchorPersistenceCreateInfoANDROID. type
يجب أن يكونXR_TYPE_DEVICE_ANCHOR_PERSISTENCE_CREATE_INFO_ANDROID
next
يجب أن يكونNULL
أو مؤشرًا صالحًا إلى البنية التالية في سلسلة البنية.
يتم تحديد دالة xrDestroyDeviceAnchorPersistenceANDROID على النحو التالي:
XrResult xrDestroyDeviceAnchorPersistenceANDROID(
XrDeviceAnchorPersistenceANDROID handle);
أوصاف المَعلمات
-
handle
هو معرّف XrDeviceAnchorPersistenceANDROID أنشأهxrCreateDeviceAnchorPersistenceANDROID
في السابق.
تؤدي الدالة xrDestroyDeviceAnchorPersistenceANDROID إلى تدمير معرّف الاحتفاظ ببيانات الربط بالجهاز.
الاستخدام الصالح (ضمني)
- يجب تفعيل إضافة
XR_ANDROID_device_anchor_persistence
قبل استدعاء xrDestroyDeviceAnchorPersistenceANDROID. 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 يتم فيه عرض معرّف UUID للعنصر الثابت.
يمكن للتطبيق طلب الاحتفاظ بالعناصر الأساسية من خلال استدعاء دالة xrPersistAnchorANDROID. يجب ألا يفترض التطبيق أنّ قيمة السلسلة المعروضة عند نجاح الإجراء تعني أنّه تم حفظ العنصر الأساسي على الفور. يجب أن يستخدم التطبيق xrGetAnchorPersistStateANDROID للتحقّق من حالة ثبات العنصر الأساسي باستخدام العنصر الأساسي المُعادXrUuidEXT. يمكن للتطبيق استخدام xrUnpersistAnchorANDROID لإلغاء ثبات العنصر الأساسي.
- سيتم عرض القيمة
XR_ERROR_ANCHOR_NOT_TRACKING_ANDROID
إذا لم يكن يتم تتبُّع العنصر الأساسي في وقت المكالمة. - سيتم عرض
XR_SUCCESS
بعد إضافة العنصر الثابت إلى "قائمة الانتظار" للحفاظ عليه.
الاستخدام الصالح (ضمني)
- يجب تفعيل إضافة
XR_ANDROID_device_anchor_persistence
قبل استدعاء xrPersistAnchorANDROID. 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 للحفاظ عليه.
الاستخدام الصالح (ضمني)
- يجب تفعيل إضافة
XR_ANDROID_device_anchor_persistence
قبل استخدام XrPersistedAnchorSpaceInfoANDROID. 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 يتم من خلاله عرض حالة العنصر المرجعي.- سيتم عرض
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
في حال عدم العثور على العنصر الثابت XrUuidEXT. - سيتم عرض
XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
إذا كانت البيانات الثابتة لـanchorId
غير جاهزة.
الاستخدام الصالح (ضمني)
- يجب تفعيل إضافة
XR_ANDROID_device_anchor_persistence
قبل استدعاء xrGetAnchorPersistStateANDROID. 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 |
الوصف |
|
لم يطلب التطبيق الاحتفاظ بـ Anchor. |
|
تم طلب الاحتفاظ بـ Anchor، ولكن لم يتم الاحتفاظ به بعد. |
|
تم الاحتفاظ بالإشارة بنجاح من خلال وقت التشغيل. |
إنشاء عنصر ربط من البيانات الثابتة
يتم تعريف الدالة xrCreatePersistedAnchorSpaceANDROID على النحو التالي:
XrResult xrCreatePersistedAnchorSpaceANDROID(
XrDeviceAnchorPersistenceANDROID handle,
const XrPersistedAnchorSpaceCreateInfoANDROID* createInfo,
XrSpace* anchorOutput);
أوصاف المَعلمات
-
handle
هو XrDeviceAnchorPersistenceANDROID. createInfo
هو XrPersistedAnchorSpaceCreateInfoANDROID الذي يحتوي على مَعلمات لإنشاء العنصر الأساسي.anchorOutput
هو مؤشر إلى XrSpace يتم من خلاله عرض مساحة الربط الجديدة.
يمكن للتطبيق إنشاء عنصر تثبيت XrSpace من XrAnchor تم حفظه سابقًا من خلال استدعاء xrCreatePersistedAnchorSpaceANDROID باستخدامXrUuidEXT نفسه. هذه طريقة أخرى لإنشاء عناصر الربط كما هو محدّد
في XR_ANDROID_trackables
.
- سيتم عرض
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
في حال عدم العثور على العنصر الثابت XrUuidEXT.
الاستخدام الصالح (ضمني)
- يجب تفعيل إضافة
XR_ANDROID_device_anchor_persistence
قبل استدعاء xrCreatePersistedAnchorSpaceANDROID. 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 options لإنشاء العنصر الأساسي عند تمريرها إلى xrCreateDeviceAnchorPersistenceANDROID.
الاستخدام الصالح (ضمني)
- يجب تفعيل إضافة
XR_ANDROID_device_anchor_persistence
قبل استخدام XrPersistedAnchorSpaceCreateInfoANDROID. 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
غير كافية.anchorIds
هو مؤشر إلى صفيف من هياكل XrUuidEXT. يمكن أن تكونNULL
إذا كانتanchorIdsCapacityInput
تساوي 0.- اطّلِع على قسم مَعلمات حجم ذاكرة التخزين المؤقت للحصول على وصف تفصيلي
لاسترداد حجم
anchorIds
المطلوب.
يجوز للتطبيق سرد جميع نقاط الربط الحالية الثابتة من خلال استدعاء xrEnumeratePersistedAnchorsANDROID. سيحتوي anchorIds
على ملف شخصي يحتوي على
أرقام UUID لعناصر الربط الثابتة التي تصل إلى سعة الصفيف. إذا كانت السعة
غير كافية، لا تضمن التطبيقات العناصر التي يتم عرضها.
الاستخدام الصالح (ضمني)
- يجب تفعيل امتداد
XR_ANDROID_device_anchor_persistence
قبل استدعاء xrEnumeratePersistedAnchorsANDROID. 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
إذا كانت البيانات الثابتة غير جاهزة. - سيتم عرض
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
في حال عدم العثور على العنصر الثابت XrUuidEXT.
الاستخدام الصالح (ضمني)
- يجب تفعيل إضافة
XR_ANDROID_device_anchor_persistence
قبل استدعاء xrUnpersistAnchorANDROID. 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));
أنواع العناصر الجديدة
ثوابت قائمة التعداد الجديدة
تم توسيع قائمة 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
عمليات التعداد الجديدة
التصاميم الجديدة
- XrDeviceAnchorPersistenceCreateInfoANDROID
- XrPersistedAnchorSpaceCreateInfoANDROID
- XrPersistedAnchorSpaceInfoANDROID
- XrSystemDeviceAnchorPersistencePropertiesANDROID
الدوالّ الجديدة
- xrEnumerateSupportedPersistenceAnchorTypesANDROID
- xrCreateDeviceAnchorPersistenceANDROID
- xrDestroyDeviceAnchorPersistenceANDROID
- xrPersistAnchorANDROID
- xrGetAnchorPersistStateANDROID
- xrCreatePersistedAnchorSpaceANDROID
- xrEnumeratePersistedAnchorsANDROID
- xrUnpersistAnchorANDROID
المشاكل
سجلّ الإصدارات
- النسخة 1، 10-10-2024 (كيني فيركمير)
- الوصف الأولي للإضافة