رشته نام
XR_ANDROID_device_anchor_persistence
نوع پسوند
پسوند نمونه
شماره برنامه افزودنی ثبت شده
458
تجدید نظر
1
وابستگی های افزونه و نسخه
XR_EXT_uuid و XR_ANDROID_trackables
آخرین تاریخ اصلاح
2024-10-10
وضعیت IP
هیچ ادعای IP شناخته شده ای وجود ندارد.
مشارکت کنندگان
نیهاو جین، گوگل
لوانا چن، گوگل
اسپنسر کوین، گوگل
کنی ورکامر، گوگل
نمای کلی
این برنامه افزودنی به برنامه اجازه می دهد تا لنگرها را در دستگاه فعلی برای کاربر فعلی در سراسر برنامه ها و جلسات دستگاه باقی بماند، بازیابی کند و ادامه دهد.
قابلیت سیستم را بررسی کنید
ساختار XrSystemDeviceAnchorPersistencePropertiesANDROID به صورت زیر تعریف می شود:
typedef struct XrSystemDeviceAnchorPersistencePropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsAnchorPersistence;
} XrSystemDeviceAnchorPersistencePropertiesANDROID;
توضیحات اعضا
-
typeXrStructureType این ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
supportsAnchorPersistenceیکXrBool32است که نشان می دهد آیا سیستم فعلی از پایداری لنگر برای لنگرهای فضایی پشتیبانی می کند یا خیر.
یک برنامه کاربردی می تواند با گسترش XrSystemProperties با ساختار XrSystemDeviceAnchorPersistencePropertiesANDROID در هنگام فراخوانی xrGetSystemProperties ، سیستم قادر به حفظ لنگرهای فضایی (نگاه کنید به xrCreateAnchorSpaceANDROID ) را بررسی کند. برای لنگرهای قابل ردیابی پشتیبانی شده، یک برنامه کاربردی می تواند از 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);
توضیحات پارامترها
-
sessionXrSession است که XrDeviceAnchorPersistenceANDROID را ایجاد می کند. -
trackableTypeCapacityInputظرفیتtrackableTypesیا 0 برای بازیابی ظرفیت مورد نیاز است. -
trackableTypeCountOutputیک اشارهگر به تعداد آرایه یا اشارهگر به ظرفیت مورد نیاز در مواردی است کهtrackableTypeCapacityInputکافی نیست. -
trackableTypesاشاره گر به آرایه ای از XrTrackableTypeANDROID است، اما اگرtrackableTypeCapacityInput0باشد، می تواندNULLباشد. - برای توضیح دقیق بازیابی اندازه
trackableTypesمورد نیاز، به بخش پارامترهای اندازه بافر مراجعه کنید.
این برنامه می تواند از xrEnumerateSupportedPersistenceAnchorTypesANDROID برای بررسی پشتیبانی از ماندگاری لنگر در سایر ردیابی های XrTrackableTypeANDROID استفاده کند.
اگر یک XrTrackableTypeANDROID معین در آرایه trackableTypes برگردانده نشود، آنگاه XR_ERROR_FEATURE_UNSUPPORTED از توابع پایداری لنگر دستگاه که بر روی یک لنگر از آن نوع کار میکنند، بازگردانده میشود.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_device_anchor_persistenceباید قبل از فراخوانی xrEnumerateSupportedPersistenceAnchorTypesANDROID فعال شود -
instanceباید یک دسته XrInstance معتبر باشد -
trackableTypeCountOutputباید یک اشاره گر به یک مقدارuint32_tباشد - اگر
trackableTypeCapacityInput0, trackableTypesباید نشانگر آرایه ای از مقادیرtrackableTypeCapacityInputXrTrackableTypeANDROID باشد.
کدهای بازگشت
-
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);
توضیحات پارامترها
-
sessionXrSession است که XrDeviceAnchorPersistenceANDROID را ایجاد می کند. -
createInfoXrDeviceAnchorPersistenceCreateInfoANDROID حاوی پارامترهایی برای XrDeviceAnchorPersistenceANDROID است. -
outHandleیک اشاره گر به یک دسته است که در آن XrDeviceAnchorPersistenceANDROID ایجاد شده برگردانده می شود.
یک برنامه می تواند با فراخوانی xrCreateDeviceAnchorPersistenceANDROID یک دسته XrDeviceAnchorPersistenceANDROID ایجاد کند. XrDeviceAnchorPersistenceANDROID را می توان در فراخوانی های بعدی API برای ماندگاری یا عدم ماندگاری لنگرها استفاده کرد. دسته 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;
توضیحات اعضا
-
typeXrStructureType این ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته 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);
توضیحات پارامترها
-
handleXrDeviceAnchorPersistenceANDROID است. -
persistedInfoXrPersistedAnchorSpaceInfoANDROID حاوی پارامترهایی برای ماندگاری لنگر است. -
anchorIdOutputیک اشاره گر به XrUuidEXT است که در آن UUID لنگر پایدار برگردانده می شود.
این برنامه میتواند با فراخوانی xrPersistAnchorANDROID، لنگرها را درخواست کند. برنامه نباید یک مقدار بازگشت موفقیت آمیز را فرض کند به این معنی که لنگر بلافاصله باقی می ماند. برنامه باید از xrGetAnchorPersistStateANDROID برای بررسی وضعیت پایدار لنگر با استفاده از لنگر برگشتی XrUuidEXT استفاده کند. این برنامه میتواند از xrUnpersistAnchorANDROID برای بازکردن انکر استفاده کند.
- اگر لنگر در زمان تماس ردیابی نشود،
XR_ERROR_ANCHOR_NOT_TRACKING_ANDROIDبرگردانده خواهد شد. - در صورتی که دادههای باقیمانده آماده نباشند،
XR_ERROR_PERSISTED_DATA_NOT_READY_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;
توضیحات اعضا
-
typeXrStructureType این ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته 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);
توضیحات پارامترها
-
handleXrDeviceAnchorPersistenceANDROID است. -
anchorIdXrUuidEXT لنگر است. -
persistStateیک اشاره گر به XrAnchorPersistStateANDROID است که در آن وضعیت لنگر برگردانده می شود. - اگر لنگر XrUuidEXT پیدا نشود،
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROIDبرگردانده خواهد شد. - اگر دادههای باقیمانده
anchorIdآماده نباشد،XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROIDبرگردانده میشود.
استفاده معتبر (ضمنی)
- پسوند
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 درخواست شده است که ادامه یابد اما هنوز ادامه نیافته است. |
| Anchor با موفقیت در زمان اجرا ادامه یافته است. |
یک لنگر از داده های ثابت ایجاد کنید
تابع xrCreatePersistedAnchorSpaceANDROID به صورت زیر تعریف می شود:
XrResult xrCreatePersistedAnchorSpaceANDROID(
XrDeviceAnchorPersistenceANDROID handle,
const XrPersistedAnchorSpaceCreateInfoANDROID* createInfo,
XrSpace* anchorOutput);
توضیحات پارامترها
-
handleXrDeviceAnchorPersistenceANDROID است. -
createInfoXrPersistedAnchorSpaceCreateInfoANDROID حاوی پارامترهایی برای ایجاد لنگر است. -
anchorOutputیک اشاره گر به XrSpace است که در آن فضای لنگر جدید برگردانده می شود.
این برنامه میتواند با فراخوانی xrCreatePersistedAnchorSpaceANDROID با همان XrUuidEXT ، یک لنگر XrSpace از یک لنگر ثابت شده قبلی ایجاد کند. این روش دیگری برای ایجاد لنگرها است که در XR_ANDROID_trackables تعریف شده است.
- اگر لنگر XrUuidEXT پیدا نشود،
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROIDبرگردانده خواهد شد.
استفاده معتبر (ضمنی)
- پسوند
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;
توضیحات اعضا
-
typeXrStructureType این ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
anchorIdXrUuidEXT لنگر پایدار برای ایجاد یک لنگر XrSpace از آن است.
ساختار XrPersistedAnchorSpaceCreateInfoANDROID هنگامی که به 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);
توضیحات پارامترها
-
handleXrDeviceAnchorPersistenceANDROID است. -
anchorIdsCapacityInputظرفیت آرایهanchorIdsیا 0 برای نشان دادن درخواست برای بازیابی ظرفیت مورد نیاز است. -
anchorIdsCountOutputیک اشاره گر برای تعدادanchorIdsنوشته شده است، یا یک اشاره گر به ظرفیت مورد نیاز در مواردی کهanchorIdsCapacityInputکافی نیست. -
anchorIdsیک اشاره گر به آرایه ای از ساختارهای XrUuidEXT است. اگرanchorIdsCapacityInput0 باشد می تواندNULLباشد. - برای توضیحات مفصل در مورد بازیابی اندازه
anchorIdsمورد نیاز، به بخش پارامترهای اندازه بافر مراجعه کنید.
این برنامه ممکن است با فراخوانی xrEnumeratePersistedAnchorsANDROID، تمام لنگرهای ثابت فعلی را شمارش کند. anchorIds UUID لنگرهای ماندگار را تا ظرفیت آرایه نگه میدارد. اگر ظرفیت کافی نباشد، برنامه ها هیچ تضمینی در مورد بازگرداندن لنگرها ندارند.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_device_anchor_persistenceباید قبل از فراخوانی xrEnumeratePersistedAnchorsANDROID فعال شود -
handleباید یک دسته معتبر XrDeviceAnchorPersistenceANDROID باشد -
anchorIdsCountOutputباید یک اشاره گر به یک مقدارuint32_tباشد - اگر
anchorIdsCapacityInput0, anchorIdsباید نشانگر آرایهای از ساختارهایanchorIdsCapacityInputXrUuidEXT باشد.
کدهای بازگشت
-
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);
توضیحات پارامترها
-
handleXrDeviceAnchorPersistenceANDROID است. -
anchorIdXrUuidEXT لنگر است که ادامه نمییابد.
برنامه ممکن است با فراخوانی xrUnpersistAnchorANDROID و ارسال لنگر XrUuidEXT لنگر به unpersist، یک لنگر ماندگار را از بین ببرد.
- در صورتی که دادههای باقیمانده آماده نباشند،
XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROIDبرگردانده میشود. - اگر لنگر XrUuidEXT پیدا نشود،
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROIDبرگردانده خواهد شد.
استفاده معتبر (ضمنی)
- برنامه افزودنی
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;
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
شمارش 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
- xrEnumerate Persisted AnchorsANDROID
- xrUnpersistAnchorANDROID
مسائل
تاریخچه نسخه
- بازبینی 1، 10-10-2024 (کنی ورکامر)
- توضیحات پسوند اولیه
OpenXR™ و لوگوی OpenXR علائم تجاری متعلق به The Khronos Group Inc. هستند و به عنوان یک علامت تجاری در چین، اتحادیه اروپا، ژاپن و بریتانیا ثبت شده اند.