برنامه افزودنی OpenXR XR_ANDROID_device_anchor_persistence

رشته نام

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 از توابع پایداری لنگر دستگاه که روی یک لنگر فضایی کار می‌کنند، برگردانده می‌شود.

استفاده معتبر (ضمنی)

تابع 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_SUCCESS

شکست

  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_FUNCTION_UNSUPPORTED

یک دستگیره پایداری لنگر دستگاه ایجاد کنید

XrDeviceAnchorPersistenceANDROID دسته ای است که منابع مورد نیاز برای تداوم و پیگیری لنگرهای پایدار را نشان می دهد.

XR_DEFINE_HANDLE(XrDeviceAnchorPersistenceANDROID)

تابع xrCreateDeviceAnchorPersistenceANDROID به صورت زیر تعریف می شود:

XrResult xrCreateDeviceAnchorPersistenceANDROID(
    XrSession                                   session,
    const XrDeviceAnchorPersistenceCreateInfoANDROID* createInfo,
    XrDeviceAnchorPersistenceANDROID*           outHandle);

توضیحات پارامترها

یک برنامه می تواند با فراخوانی xrCreateDeviceAnchorPersistenceANDROID یک دسته XrDeviceAnchorPersistenceANDROID ایجاد کند. XrDeviceAnchorPersistenceANDROID را می توان در فراخوانی های بعدی API برای ماندگاری یا عدم ماندگاری لنگرها استفاده کرد. دسته 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 است که در آن وضعیت لنگر برگردانده می شود.
  • اگر لنگر XrUuidEXT پیدا نشود، XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID برگردانده خواهد شد.
  • اگر داده‌های باقی‌مانده anchorId آماده نباشد، XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID برگردانده می‌شود.

استفاده معتبر (ضمنی)

کدهای بازگشت

موفقیت

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

شکست

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID

شماره XrAnchorPersistStateANDROID به صورت زیر تعریف می شود:

typedef enum XrAnchorPersistStateANDROID {
    XR_ANCHOR_PERSIST_STATE_PERSIST_NOT_REQUESTED_ANDROID = 0,
    XR_ANCHOR_PERSIST_STATE_PERSIST_PENDING_ANDROID = 1,
    XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID = 2
} XrAnchorPersistStateANDROID;

Enum

توضیحات

XR_ANCHOR_PERSIST_STATE_PERSIST_NOT_REQUESTED_ANDROID

Anchor توسط برنامه درخواست نشده است.

XR_ANCHOR_PERSIST_STATE_PERSIST_PENDING_ANDROID

از Anchor درخواست شده است که ادامه یابد اما هنوز ادامه نیافته است.

XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID

Anchor با موفقیت در زمان اجرا ادامه یافته است.

یک لنگر از داده های ثابت ایجاد کنید

تابع xrCreatePersistedAnchorSpaceANDROID به صورت زیر تعریف می شود:

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

توضیحات پارامترها

این برنامه می‌تواند با فراخوانی xrCreatePersistedAnchorSpaceANDROID با همان XrUuidEXT، یک لنگر XrSpace از یک لنگر ثابت شده قبلی ایجاد کند. این روش دیگری برای ایجاد لنگرها است که در XR_ANDROID_trackables تعریف شده است.

  • اگر لنگر XrUuidEXT پیدا نشود، XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID برگردانده خواهد شد.

استفاده معتبر (ضمنی)

کدهای بازگشت

موفقیت

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

شکست

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
  • XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID

ساختار XrPersistedAnchorSpaceCreateInfoANDROID به صورت زیر تعریف می شود:

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

توضیحات اعضا

  • type XrStructureType این ساختار است.
  • next NULL یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است.
  • anchorId XrUuidEXT لنگر پایدار برای ایجاد یک لنگر XrSpace از آن است.

ساختار XrPersistedAnchorSpaceCreateInfoANDROID هنگامی که به xrCreateDeviceAnchorPersistenceANDROID منتقل می شود، گزینه های ایجاد لنگر را ارائه می دهد.

استفاده معتبر (ضمنی)

لنگرهای ماندگار را برشمارید

تابع xrEnumeratePersistedAnchorsANDROID به صورت زیر تعریف می شود:

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

توضیحات پارامترها

  • handle XrDeviceAnchorPersistenceANDROID است.
  • anchorIdsCapacityInput ظرفیت آرایه anchorIds یا 0 برای نشان دادن درخواست برای بازیابی ظرفیت مورد نیاز است.
  • anchorIdsCountOutput یک اشاره گر برای تعداد anchorIds نوشته شده است، یا یک اشاره گر به ظرفیت مورد نیاز در مواردی که anchorIdsCapacityInput کافی نیست.
  • anchorIds یک اشاره گر به آرایه ای از ساختارهای XrUuidEXT است. اگر anchorIdsCapacityInput 0 باشد می تواند NULL باشد.
  • برای توضیحات مفصل در مورد بازیابی اندازه anchorIds مورد نیاز، به بخش پارامترهای اندازه بافر مراجعه کنید.

این برنامه ممکن است با فراخوانی xrEnumeratePersistedAnchorsANDROID، تمام لنگرهای ثابت فعلی را شمارش کند. anchorIds UUID لنگرهای ماندگار را تا ظرفیت آرایه نگه می‌دارد. اگر ظرفیت کافی نباشد، برنامه ها هیچ تضمینی در مورد بازگرداندن لنگرها ندارند.

استفاده معتبر (ضمنی)

کدهای بازگشت

موفقیت

  • 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 لنگر به unpersist، یک لنگر ماندگار را از بین ببرد.

  • در صورتی که داده‌های باقی‌مانده آماده نباشند، XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID برگردانده می‌شود.
  • اگر لنگر XrUuidEXT پیدا نشود، XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID برگردانده خواهد شد.

استفاده معتبر (ضمنی)

کدهای بازگشت

موفقیت

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

شکست

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
  • XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID

کد مثال برای ماندگاری لنگر

کد مثال زیر نحوه بازرسی قابلیت سیستم، ماندگاری، شمارش و عدم ماندگاری لنگرها و همچنین ایجاد یک لنگر از لنگر پایدار XrUuidEXT را نشان می‌دهد.

XrSession session; // previously initialized
XrSpace anchor; // previously initialized

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrEnumerateSupportedPersistenceAnchorTypesANDROID xrEnumerateSupportedPersistenceAnchorTypesANDROID; // previously initialized
PFN_xrCreateDeviceAnchorPersistenceANDROID xrCreateDeviceAnchorPersistenceANDROID; // previously initialized
PFN_xrDestroyDeviceAnchorPersistenceANDROID xrDestroyDeviceAnchorPersistenceANDROID; // previously initialized
PFN_xrPersistAnchorANDROID xrPersistAnchorANDROID; // previously initialized
PFN_xrGetAnchorPersistStateANDROID xrGetAnchorPersistStateANDROID; // previously initialized
PFN_xrCreatePersistedAnchorSpaceANDROID xrCreatePersistedAnchorSpaceANDROID; // previously initialized
PFN_xrEnumeratePersistedAnchorsANDROID xrEnumeratePersistedAnchorsANDROID; // previously initialized
PFN_xrUnpersistAnchorANDROID xrUnpersistAnchorANDROID; // previously initialized

// Create a device anchor persistence handle
XrDeviceAnchorPersistenceCreateInfoANDROID persistenceHandleCreateInfo;
persistenceHandleCreateInfo.type = XR_TYPE_DEVICE_ANCHOR_PERSISTENCE_CREATE_INFO_ANDROID;
persistenceHandleCreateInfo.next = nullptr;

XrDeviceAnchorPersistenceANDROID persistenceHandle;
CHK_XR(xrCreateDeviceAnchorPersistenceANDROID(session, &persistenceHandleCreateInfo, &persistenceHandle));

/// Persist an anchor
XrPersistedAnchorSpaceInfo anchorSpaceInfo;
anchorSpaceInfo.type = XR_TYPE_PERSISTED_ANCHOR_SPACE_INFO_ANDROID;
anchorSpaceInfo.next = nullptr;
anchorSpaceInfo.anchor = anchor;

XrUuidEXT anchorId;
CHK_XR(xrPersistAnchorANDROID(persistenceHandle, &anchorSpaceInfo, &anchorId));

// ... Update loop ...
// Poll for anchor persist state to confirm if it was successfully persisted
XrAnchorPersistStateANDROID persistState;
CHK_XR(xrGetAnchorPersistStateANDROID(persistenceHandle, &anchorId, &persistState));
if (persistState == XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID)  {
  // The anchor was persisted successfully
}

// Enumerate all persisted anchors
uint32_t anchorCountOutput = 0;
std::vector<XrUuidEXT> allAnchors;

CHK_XR(xrEnumeratePersistedAnchorsANDROID(
  persistenceHandle,
  anchorCountOutput,
  &anchorCountOutput,
  nullptr
));
allAnchors.resize(anchorCountOutput, XR_NULL_HANDLE);

// Fetch the actual anchors in an appropriately resized array.
CHK_XR(xrEnumeratePersistedAnchorsANDROID(
  persistenceHandle,
  anchorCountOutput,
  &anchorCountOutput,
  allAnchors.data()
));

// Creating an anchor from a previously persisted anchor using its UUID
XrTime updateTime; // Time used for the current frame's simulation update.
XrUuidEXT anchorId = allAnchors[0];

XrPersistedAnchorSpaceCreateInfo createInfo;
createInfo.type = XR_TYPE_PERSISTED_ANCHOR_CREATE_INFO_ANDROID;
createInfo.next = nullptr;
createInfo.anchorId = anchorId;

XrSpace anchorSpace = XR_NULL_HANDLE;
CHK_XR(xrCreatePersistedAnchorSpaceANDROID(
  persistenceHandle,
  &createInfo,
  &anchorSpace
));

// The anchor was found and retrieved from the local device successfully.
XrSpaceLocation anchorLocation = { XR_TYPE_SPACE_LOCATION };
CHK_XR(xrLocateSpace(anchorSpace, appSpace, updateTime, &anchorLocation));
XrPosef pose = anchorLocation.pose;

// Once app is done with all persistence related tasks
CHK_XR(xrDestroySpace(anchorSpace));
CHK_XR(xrDestroyDeviceAnchorPersistenceANDROID(persistenceHandle));

انواع اشیاء جدید

ثابت های جدید Enum

شمارش 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 (کنی ورکامر)
    • توضیحات پسوند اولیه
،

رشته نام

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 از توابع پایداری لنگر دستگاه که روی یک لنگر فضایی کار می‌کنند، برگردانده می‌شود.

استفاده معتبر (ضمنی)

تابع 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_SUCCESS

شکست

  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_FUNCTION_UNSUPPORTED

یک دستگیره پایداری لنگر دستگاه ایجاد کنید

XrDeviceAnchorPersistenceANDROID دسته ای است که منابع مورد نیاز برای تداوم و پیگیری لنگرهای پایدار را نشان می دهد.

XR_DEFINE_HANDLE(XrDeviceAnchorPersistenceANDROID)

تابع xrCreateDeviceAnchorPersistenceANDROID به صورت زیر تعریف می شود:

XrResult xrCreateDeviceAnchorPersistenceANDROID(
    XrSession                                   session,
    const XrDeviceAnchorPersistenceCreateInfoANDROID* createInfo,
    XrDeviceAnchorPersistenceANDROID*           outHandle);

توضیحات پارامترها

یک برنامه می تواند با فراخوانی xrCreateDeviceAnchorPersistenceANDROID یک دسته XrDeviceAnchorPersistenceANDROID ایجاد کند. XrDeviceAnchorPersistenceANDROID را می توان در فراخوانی های بعدی API برای ماندگاری یا عدم ماندگاری لنگرها استفاده کرد. دسته 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 است که در آن وضعیت لنگر برگردانده می شود.
  • اگر لنگر XrUuidEXT پیدا نشود، XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID برگردانده خواهد شد.
  • اگر داده‌های باقی‌مانده anchorId آماده نباشد، XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID برگردانده می‌شود.

استفاده معتبر (ضمنی)

کدهای بازگشت

موفقیت

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

شکست

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID

شماره XrAnchorPersistStateANDROID به صورت زیر تعریف می شود:

typedef enum XrAnchorPersistStateANDROID {
    XR_ANCHOR_PERSIST_STATE_PERSIST_NOT_REQUESTED_ANDROID = 0,
    XR_ANCHOR_PERSIST_STATE_PERSIST_PENDING_ANDROID = 1,
    XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID = 2
} XrAnchorPersistStateANDROID;

Enum

توضیحات

XR_ANCHOR_PERSIST_STATE_PERSIST_NOT_REQUESTED_ANDROID

Anchor توسط برنامه درخواست نشده است.

XR_ANCHOR_PERSIST_STATE_PERSIST_PENDING_ANDROID

از Anchor درخواست شده است که ادامه یابد اما هنوز ادامه نیافته است.

XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID

Anchor با موفقیت در زمان اجرا ادامه یافته است.

یک لنگر از داده های ثابت ایجاد کنید

تابع xrCreatePersistedAnchorSpaceANDROID به صورت زیر تعریف می شود:

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

توضیحات پارامترها

این برنامه می‌تواند با فراخوانی xrCreatePersistedAnchorSpaceANDROID با همان XrUuidEXT، یک لنگر XrSpace از یک لنگر ثابت شده قبلی ایجاد کند. این روش دیگری برای ایجاد لنگرها است که در XR_ANDROID_trackables تعریف شده است.

  • اگر لنگر XrUuidEXT پیدا نشود، XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID برگردانده خواهد شد.

استفاده معتبر (ضمنی)

کدهای بازگشت

موفقیت

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

شکست

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
  • XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID

ساختار XrPersistedAnchorSpaceCreateInfoANDROID به صورت زیر تعریف می شود:

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

توضیحات اعضا

  • type XrStructureType این ساختار است.
  • next NULL یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است.
  • anchorId XrUuidEXT لنگر پایدار برای ایجاد یک لنگر XrSpace از آن است.

ساختار XrPersistedAnchorSpaceCreateInfoANDROID هنگامی که به xrCreateDeviceAnchorPersistenceANDROID منتقل می شود، گزینه های ایجاد لنگر را ارائه می دهد.

استفاده معتبر (ضمنی)

لنگرهای ماندگار را برشمارید

تابع xrEnumeratePersistedAnchorsANDROID به صورت زیر تعریف می شود:

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

توضیحات پارامترها

  • handle XrDeviceAnchorPersistenceANDROID است.
  • anchorIdsCapacityInput ظرفیت آرایه anchorIds یا 0 برای نشان دادن درخواست برای بازیابی ظرفیت مورد نیاز است.
  • anchorIdsCountOutput یک اشاره گر برای تعداد anchorIds نوشته شده است، یا یک اشاره گر به ظرفیت مورد نیاز در مواردی که anchorIdsCapacityInput کافی نیست.
  • anchorIds یک اشاره گر به آرایه ای از ساختارهای XrUuidEXT است. اگر anchorIdsCapacityInput 0 باشد می تواند NULL باشد.
  • برای توضیحات مفصل در مورد بازیابی اندازه anchorIds مورد نیاز، به بخش پارامترهای اندازه بافر مراجعه کنید.

این برنامه ممکن است با فراخوانی xrEnumeratePersistedAnchorsANDROID، تمام لنگرهای ثابت فعلی را شمارش کند. anchorIds UUID لنگرهای ماندگار را تا ظرفیت آرایه نگه می‌دارد. اگر ظرفیت کافی نباشد، برنامه ها هیچ تضمینی در مورد بازگرداندن لنگرها ندارند.

استفاده معتبر (ضمنی)

کدهای بازگشت

موفقیت

  • 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 لنگر به unpersist، یک لنگر ماندگار را از بین ببرد.

  • در صورتی که داده‌های باقی‌مانده آماده نباشند، XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID برگردانده می‌شود.
  • اگر لنگر XrUuidEXT پیدا نشود، XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID برگردانده خواهد شد.

استفاده معتبر (ضمنی)

کدهای بازگشت

موفقیت

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

شکست

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
  • XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID

کد مثال برای ماندگاری لنگر

کد مثال زیر نحوه بازرسی قابلیت سیستم، ماندگاری، شمارش و عدم ماندگاری لنگرها و همچنین ایجاد یک لنگر از لنگر پایدار XrUuidEXT را نشان می‌دهد.

XrSession session; // previously initialized
XrSpace anchor; // previously initialized

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrEnumerateSupportedPersistenceAnchorTypesANDROID xrEnumerateSupportedPersistenceAnchorTypesANDROID; // previously initialized
PFN_xrCreateDeviceAnchorPersistenceANDROID xrCreateDeviceAnchorPersistenceANDROID; // previously initialized
PFN_xrDestroyDeviceAnchorPersistenceANDROID xrDestroyDeviceAnchorPersistenceANDROID; // previously initialized
PFN_xrPersistAnchorANDROID xrPersistAnchorANDROID; // previously initialized
PFN_xrGetAnchorPersistStateANDROID xrGetAnchorPersistStateANDROID; // previously initialized
PFN_xrCreatePersistedAnchorSpaceANDROID xrCreatePersistedAnchorSpaceANDROID; // previously initialized
PFN_xrEnumeratePersistedAnchorsANDROID xrEnumeratePersistedAnchorsANDROID; // previously initialized
PFN_xrUnpersistAnchorANDROID xrUnpersistAnchorANDROID; // previously initialized

// Create a device anchor persistence handle
XrDeviceAnchorPersistenceCreateInfoANDROID persistenceHandleCreateInfo;
persistenceHandleCreateInfo.type = XR_TYPE_DEVICE_ANCHOR_PERSISTENCE_CREATE_INFO_ANDROID;
persistenceHandleCreateInfo.next = nullptr;

XrDeviceAnchorPersistenceANDROID persistenceHandle;
CHK_XR(xrCreateDeviceAnchorPersistenceANDROID(session, &persistenceHandleCreateInfo, &persistenceHandle));

/// Persist an anchor
XrPersistedAnchorSpaceInfo anchorSpaceInfo;
anchorSpaceInfo.type = XR_TYPE_PERSISTED_ANCHOR_SPACE_INFO_ANDROID;
anchorSpaceInfo.next = nullptr;
anchorSpaceInfo.anchor = anchor;

XrUuidEXT anchorId;
CHK_XR(xrPersistAnchorANDROID(persistenceHandle, &anchorSpaceInfo, &anchorId));

// ... Update loop ...
// Poll for anchor persist state to confirm if it was successfully persisted
XrAnchorPersistStateANDROID persistState;
CHK_XR(xrGetAnchorPersistStateANDROID(persistenceHandle, &anchorId, &persistState));
if (persistState == XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID)  {
  // The anchor was persisted successfully
}

// Enumerate all persisted anchors
uint32_t anchorCountOutput = 0;
std::vector<XrUuidEXT> allAnchors;

CHK_XR(xrEnumeratePersistedAnchorsANDROID(
  persistenceHandle,
  anchorCountOutput,
  &anchorCountOutput,
  nullptr
));
allAnchors.resize(anchorCountOutput, XR_NULL_HANDLE);

// Fetch the actual anchors in an appropriately resized array.
CHK_XR(xrEnumeratePersistedAnchorsANDROID(
  persistenceHandle,
  anchorCountOutput,
  &anchorCountOutput,
  allAnchors.data()
));

// Creating an anchor from a previously persisted anchor using its UUID
XrTime updateTime; // Time used for the current frame's simulation update.
XrUuidEXT anchorId = allAnchors[0];

XrPersistedAnchorSpaceCreateInfo createInfo;
createInfo.type = XR_TYPE_PERSISTED_ANCHOR_CREATE_INFO_ANDROID;
createInfo.next = nullptr;
createInfo.anchorId = anchorId;

XrSpace anchorSpace = XR_NULL_HANDLE;
CHK_XR(xrCreatePersistedAnchorSpaceANDROID(
  persistenceHandle,
  &createInfo,
  &anchorSpace
));

// The anchor was found and retrieved from the local device successfully.
XrSpaceLocation anchorLocation = { XR_TYPE_SPACE_LOCATION };
CHK_XR(xrLocateSpace(anchorSpace, appSpace, updateTime, &anchorLocation));
XrPosef pose = anchorLocation.pose;

// Once app is done with all persistence related tasks
CHK_XR(xrDestroySpace(anchorSpace));
CHK_XR(xrDestroyDeviceAnchorPersistenceANDROID(persistenceHandle));

انواع اشیاء جدید

ثابت های جدید Enum

شمارش 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 (کنی ورکامر)
    • توضیحات پسوند اولیه