رشته نام
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;
توضیحات اعضا
-
type
XrStructureType این ساختار است. -
next
NULL
یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته 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);
توضیحات پارامترها
-
session
XrSession است که XrDeviceAnchorPersistenceANDROID را ایجاد می کند. -
trackableTypeCapacityInput
ظرفیتtrackableTypes
یا 0 برای بازیابی ظرفیت مورد نیاز است. -
trackableTypeCountOutput
یک اشارهگر به تعداد آرایه یا اشارهگر به ظرفیت مورد نیاز در مواردی است کهtrackableTypeCapacityInput
کافی نیست. -
trackableTypes
اشاره گر به آرایه ای از XrTrackableTypeANDROID است، اما اگرtrackableTypeCapacityInput
0
باشد ، می تواندNULL
باشد. - برای توضیح دقیق بازیابی اندازه
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 ایجاد شده برگردانده می شود.
یک برنامه می تواند با فراخوانی 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;
توضیحات اعضا
-
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 است که در آن وضعیت لنگر برگردانده می شود. - اگر لنگر 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);
توضیحات پارامترها
-
handle
XrDeviceAnchorPersistenceANDROID است. -
createInfo
XrPersistedAnchorSpaceCreateInfoANDROID حاوی پارامترهایی برای ایجاد لنگر است. -
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;
توضیحات اعضا
-
type
XrStructureType این ساختار است. -
next
NULL
یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
anchorId
XrUuidEXT لنگر پایدار برای ایجاد یک لنگر 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);
توضیحات پارامترها
-
handle
XrDeviceAnchorPersistenceANDROID است. -
anchorIdsCapacityInput
ظرفیت آرایهanchorIds
یا 0 برای نشان دادن درخواست برای بازیابی ظرفیت مورد نیاز است. -
anchorIdsCountOutput
یک اشاره گر برای تعدادanchorIds
نوشته شده است، یا یک اشاره گر به ظرفیت مورد نیاز در مواردی کهanchorIdsCapacityInput
کافی نیست. -
anchorIds
یک اشاره گر به آرایه ای از ساختارهای XrUuidEXT است. اگرanchorIdsCapacityInput
0 باشد می تواندNULL
باشد. - برای توضیحات مفصل در مورد بازیابی اندازه
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 لنگر به 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;
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
شمارش 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 (کنی ورکامر)
- توضیحات پسوند اولیه
رشته نام
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;
توضیحات اعضا
-
type
XrStructureType این ساختار است. -
next
NULL
یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته 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);
توضیحات پارامترها
-
session
XrSession است که XrDeviceAnchorPersistenceANDROID را ایجاد می کند. -
trackableTypeCapacityInput
ظرفیتtrackableTypes
یا 0 برای بازیابی ظرفیت مورد نیاز است. -
trackableTypeCountOutput
یک اشارهگر به تعداد آرایه یا اشارهگر به ظرفیت مورد نیاز در مواردی است کهtrackableTypeCapacityInput
کافی نیست. -
trackableTypes
اشاره گر به آرایه ای از XrTrackableTypeANDROID است، اما اگرtrackableTypeCapacityInput
0
باشد ، می تواندNULL
باشد. - برای توضیح دقیق بازیابی اندازه
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 ایجاد شده برگردانده می شود.
یک برنامه می تواند با فراخوانی 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;
توضیحات اعضا
-
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 است که در آن وضعیت لنگر برگردانده می شود. - اگر لنگر 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);
توضیحات پارامترها
-
handle
XrDeviceAnchorPersistenceANDROID است. -
createInfo
XrPersistedAnchorSpaceCreateInfoANDROID حاوی پارامترهایی برای ایجاد لنگر است. -
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;
توضیحات اعضا
-
type
XrStructureType این ساختار است. -
next
NULL
یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
anchorId
XrUuidEXT لنگر پایدار برای ایجاد یک لنگر 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);
توضیحات پارامترها
-
handle
XrDeviceAnchorPersistenceANDROID است. -
anchorIdsCapacityInput
ظرفیت آرایهanchorIds
یا 0 برای نشان دادن درخواست برای بازیابی ظرفیت مورد نیاز است. -
anchorIdsCountOutput
یک اشاره گر برای تعدادanchorIds
نوشته شده است، یا یک اشاره گر به ظرفیت مورد نیاز در مواردی کهanchorIdsCapacityInput
کافی نیست. -
anchorIds
یک اشاره گر به آرایه ای از ساختارهای XrUuidEXT است. اگرanchorIdsCapacityInput
0 باشد می تواندNULL
باشد. - برای توضیحات مفصل در مورد بازیابی اندازه
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 لنگر به 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;
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
شمارش 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 (کنی ورکامر)
- توضیحات پسوند اولیه