מחרוזת שם
XR_ANDROID_device_anchor_persistence
סוג התוסף
תוסף למכונה
מספר תוסף רשום
458
גרסה
1
תלות בתוספים ובגרסאות
XR_EXT_uuid
וכן XR_ANDROID_trackables
תאריך השינוי האחרון
2024-10-10
סטטוס כתובת ה-IP
לא ידוע על תלונות על הפרת זכויות יוצרים בנושא כתובת IP.
שותפים ביצירת התוכן
Nihav Jain, Google
לבנה צ'ן, Google
ספנסר קווין (Spencer Quin), Google
Kenny Vercaemer, Google
סקירה כללית
התוסף הזה מאפשר לאפליקציה לשמור, לאחזר ולבטל שמירה של עוגנים במכשיר הנוכחי עבור המשתמש הנוכחי, בין אפליקציות ובין סשנים במכשיר.
בדיקת יכולות המערכת
המבנה XrSystemDeviceAnchorPersistencePropertiesANDROID מוגדר באופן הבא:
typedef struct XrSystemDeviceAnchorPersistencePropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsAnchorPersistence;
} XrSystemDeviceAnchorPersistencePropertiesANDROID;
תיאורי חברים
type
הוא XrStructureType של המבנה הזה.next
הואNULL
או הפניה למבנה הבא בשרשרת המבנים. לא מוגדרים מבנים כאלה ב-OpenXR או בהרחבה הזו.supportsAnchorPersistence
הואXrBool32
שמציין אם המערכת הנוכחית תומכת בעקביות של עוגנים במיקומים מרחביים.
אפליקציה יכולה לבדוק אם המערכת מסוגלת לשמור עוגנים מרחביים (ראו xrCreateAnchorSpaceANDROID) על ידי הרחבת XrSystemProperties עם המבנה XrSystemDeviceAnchorPersistencePropertiesANDROID בזמן הקריאה ל-xrGetSystemProperties. לגבי עוגנים נתמכים שניתן לעקוב אחריהם, אפליקציה יכולה להשתמש ב-xrEnumerateSupportedPersistenceAnchorTypesANDROID כדי לשלוח שאילתה לגבי הסוגים הנתמכים.
אם הערך XR_FALSE
מוחזר עבור supportsAnchorPersistence
, הערך XR_ERROR_FEATURE_UNSUPPORTED
יוחזר מפונקציות העקביות של עוגן המכשיר שפועלות על עוגן מרחבי.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_device_anchor_persistence
לפני שמשתמשים ב-XrSystemDeviceAnchorPersistencePropertiesANDROID. - הערך של
type
חייב להיותXR_TYPE_SYSTEM_DEVICE_ANCHOR_PERSISTENCE_PROPERTIES_ANDROID
next
חייב להיותNULL
או מצביע תקין למבנה הבא בשרשרת המבנים
הפונקציה xrEnumerateSupportedPersistenceAnchorTypesANDROID מוגדרת כך:
XrResult xrEnumerateSupportedPersistenceAnchorTypesANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t trackableTypeCapacityInput,
uint32_t* trackableTypeCountOutput,
XrTrackableTypeANDROID* trackableTypes);
תיאורי פרמטרים
session
הוא XrSession שיוצר את XrDeviceAnchorPersistenceANDROID.trackableTypeCapacityInput
היא הקיבולת שלtrackableTypes
, או 0 כדי לאחזר את הקיבולת הנדרשת.trackableTypeCountOutput
הוא הפניה למספר הפריטים במערך, או הפניה לקיבולת הנדרשת במקרה ש-trackableTypeCapacityInput
לא מספיק.trackableTypes
הוא הפניה למערך של XrTrackableTypeANDROID, אבל יכול להיותNULL
אםtrackableTypeCapacityInput
הוא0
.- בקטע פרמטרים של גודל מאגר מפורט תיאור של אחזור הגודל הנדרש של
trackableTypes
.
האפליקציה יכולה להשתמש ב-xrEnumerateSupportedPersistenceAnchorTypesANDROID כדי לבדוק אם יש תמיכה בשימור של עוגנים בפריטים אחרים למעקב מסוג XrTrackableTypeANDROID.
אם הערך של XrTrackableTypeANDROID לא מוחזר במערך trackableTypes
, הערך XR_ERROR_FEATURE_UNSUPPORTED
יוחזר מפונקציות העקביות של עוגן המכשיר שפועלות על עוגן מהסוג הזה.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_device_anchor_persistence
לפני שמפעילים את הפונקציה xrEnumerateSupportedPersistenceAnchorTypesANDROID. instance
חייב להיות מזהה XrInstance חוקיtrackableTypeCountOutput
חייב להיות הפניה לערךuint32_t
- אם
trackableTypeCapacityInput
הוא לא0, trackableTypes
, חובה שהוא יהיה הפניה למערך שלtrackableTypeCapacityInput
ערכים מסוג XrTrackableTypeANDROID
קודי החזרה
XR_SUCCESS
XR_ERROR_SYSTEM_INVALID
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SIZE_INSUFFICIENT
XR_ERROR_FUNCTION_UNSUPPORTED
יצירת ידן עקביות (handle) של עיגון למכשיר
XrDeviceAnchorPersistenceANDROID הוא כינוי שמייצג את המשאבים הנדרשים לשמירה ולמעקב אחרי עוגנים שנשמרו.
XR_DEFINE_HANDLE(XrDeviceAnchorPersistenceANDROID)
הפונקציה xrCreateDeviceAnchorPersistenceANDROID מוגדרת בתור:
XrResult xrCreateDeviceAnchorPersistenceANDROID(
XrSession session,
const XrDeviceAnchorPersistenceCreateInfoANDROID* createInfo,
XrDeviceAnchorPersistenceANDROID* outHandle);
תיאורי פרמטרים
session
הוא XrSession שיוצר את XrDeviceAnchorPersistenceANDROID.createInfo
הוא XrDeviceAnchorPersistenceCreateInfoANDROID שמכיל פרמטרים ל-XrDeviceAnchorPersistenceANDROID.outHandle
הוא הפניה למזהה (handle) שבו מוחזר האובייקט שנוצר של XrDeviceAnchorPersistenceANDROID.
אפליקציה יכולה ליצור אחיזה מסוג XrDeviceAnchorPersistenceANDROID על ידי קריאה ל-xrCreateDeviceAnchorPersistenceANDROID. אפשר להשתמש ב-XrDeviceAnchorPersistenceANDROID בקריאות API הבאות כדי לשמור או לבטל את השמירה של עוגנים. צריך לפנות את הטיפולן של XrDeviceAnchorPersistenceANDROID באמצעות הפונקציה xrDestroyDeviceAnchorPersistenceANDROID.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_device_anchor_persistence
לפני שמפעילים את xrCreateDeviceAnchorPersistenceANDROID session
חייב להיות מזהה XrSession חוקיcreateInfo
חייב להיות הפניה למבנה חוקי של XrDeviceAnchorPersistenceCreateInfoANDROIDoutHandle
חייב להיות הפניה למזהה של 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
חייב להיות הפניה למבנה חוקי של XrPersistedAnchorSpaceInfoANDROIDanchorIdOutput
חייב להיות הפניה למבנה XrUuidEXT
קודי החזרה
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_ANCHOR_NOT_TRACKING_ANDROID
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_OUT_OF_MEMORY
XR_ERROR_LIMIT_REACHED
המבנה XrPersistedAnchorSpaceInfoANDROID מוגדר כך:
typedef struct XrPersistedAnchorSpaceInfoANDROID {
XrStructureType type;
void* next;
XrSpace anchor;
} XrPersistedAnchorSpaceInfoANDROID;
תיאורי חברים
type
הוא XrStructureType של המבנה הזה.next
הואNULL
או הפניה למבנה הבא בשרשרת המבנים. לא מוגדרים מבנים כאלה ב-OpenXR או בהרחבה הזו.anchor
הוא XrSpace מוגדר קבוע שנוצר קודם לכן על ידי xrCreateAnchorSpaceANDROID.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_device_anchor_persistence
לפני שמשתמשים ב-XrPersistedAnchorSpaceInfoANDROID - הערך של
type
חייב להיותXR_TYPE_PERSISTED_ANCHOR_SPACE_INFO_ANDROID
next
חייב להיותNULL
או מצביע תקין למבנה הבא בשרשרת המבניםanchor
חייב להיות כינוי חוקי ב-XrSpace
הפונקציה xrGetAnchorPersistStateANDROID מוגדרת כך:
XrResult xrGetAnchorPersistStateANDROID(
XrDeviceAnchorPersistenceANDROID handle,
const XrUuidEXT* anchorId,
XrAnchorPersistStateANDROID* persistState);
תיאורי פרמטרים
handle
הוא XrDeviceAnchorPersistenceANDROID.anchorId
הוא XrUuidEXT של העוגן.persistState
הוא הפניה ל-XrAnchorPersistStateANDROID שבו מוחזר המצב של הצ'אנק.- הערך
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
יוחזר אם לא נמצאה האחיזה XrUuidEXT. - הערך
XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
יוחזר אם הנתונים שנשמרו שלanchorId
לא מוכנים.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_device_anchor_persistence
לפני שמפעילים את xrGetAnchorPersistStateANDROID. handle
חייב להיות מזהה XrDeviceAnchorPersistenceANDROID תקיןanchorId
חייב להיות הפניה למבנה XrUuidEXT תקיןpersistState
חייב להיות הפניה לערך של XrAnchorPersistStateANDROID
קודי החזרה
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
המאפיין XrAnchorPersistStateANDROID
מוגדר כך:
typedef enum XrAnchorPersistStateANDROID {
XR_ANCHOR_PERSIST_STATE_PERSIST_NOT_REQUESTED_ANDROID = 0,
XR_ANCHOR_PERSIST_STATE_PERSIST_PENDING_ANDROID = 1,
XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID = 2
} XrAnchorPersistStateANDROID;
Enum |
תיאור |
|
לא התבקשה שימור של הצמדה על ידי האפליקציה. |
|
נשלחה בקשה לשמירת הצ'אט, אבל היא עדיין לא נשמרה. |
|
ה-anchor נשמר בהצלחה בסביבת זמן הריצה. |
יצירת עוגן מנתונים שנשמרו
הפונקציה xrCreatePersistedAnchorSpaceANDROID מוגדרת כך:
XrResult xrCreatePersistedAnchorSpaceANDROID(
XrDeviceAnchorPersistenceANDROID handle,
const XrPersistedAnchorSpaceCreateInfoANDROID* createInfo,
XrSpace* anchorOutput);
תיאורי פרמטרים
handle
הוא XrDeviceAnchorPersistenceANDROID.createInfo
הוא XrPersistedAnchorSpaceCreateInfoANDROID שמכיל פרמטרים ליצירת הצמד.anchorOutput
הוא הפניה ל-XrSpace שבו מוחזר המרחב המשותף החדש.
האפליקציה יכולה ליצור עוגן XrSpace מעוגן שנשמר בעבר, על ידי קריאה ל-xrCreatePersistedAnchorSpaceANDROID עם אותו XrUuidEXT. זוהי דרך נוספת ליצירת עוגנים כפי שהם מוגדרים ב-XR_ANDROID_trackables
.
- הערך
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
יוחזר אם לא נמצאה האחיזה XrUuidEXT.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_device_anchor_persistence
לפני שמפעילים את xrCreatePersistedAnchorSpaceANDROID. handle
חייב להיות מזהה XrDeviceAnchorPersistenceANDROID תקיןcreateInfo
חייב להיות הפניה למבנה חוקי של XrPersistedAnchorSpaceCreateInfoANDROIDanchorOutput
חייב להיות מציין לכינוי 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. הערך יכול להיותNULL
אם הערך שלanchorIdsCapacityInput
הוא 0.- בקטע פרמטרים של גודל מאגר מפורט תיאור של אחזור הגודל הנדרש של
anchorIds
.
האפליקציה יכולה למנות את כל הווידג'טים הנוכחיים שנשמרו באמצעות קריאה ל-xrEnumeratePersistedAnchorsANDROID. המשתנה anchorIds
יאחסן את מזהי ה-UUID של ה-anchors שנשמרו עד לקיבולת של המערך. אם הקיבולת לא מספיקה, לאפליקציות אין ערובה לגבי עוגנים שיוחזרו.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_device_anchor_persistence
לפני שמפעילים את הפונקציה xrEnumeratePersistedAnchorsANDROID. handle
חייב להיות מזהה XrDeviceAnchorPersistenceANDROID תקיןanchorIdsCountOutput
חייב להיות הפניה לערךuint32_t
- אם
anchorIdsCapacityInput
הוא לא0, anchorIds
, חייב להיות מציין למערך שלanchorIdsCapacityInput
מבני XrUuidEXT
קודי החזרה
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_SIZE_INSUFFICIENT
ביטול השמירה של עוגן שנשמר
הפונקציה xrUnpersistAnchorANDROID מוגדרת כך:
XrResult xrUnpersistAnchorANDROID(
XrDeviceAnchorPersistenceANDROID handle,
const XrUuidEXT* anchorId);
תיאורי פרמטרים
handle
הוא XrDeviceAnchorPersistenceANDROID.anchorId
הוא XrUuidEXT של העוגן שרוצים לבטל את השמירה שלו.
האפליקציה יכולה לבטל את השמירה של עוגן שנשמר על ידי קריאה ל-xrUnpersistAnchorANDROID והעברת הערך של עוגן XrUuidEXT שרוצים לבטל את השמירה שלו.
- הערך
XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
יוחזר אם הנתונים שנשמרו לא מוכנים. - הערך
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
יוחזר אם לא נמצאה האחיזה XrUuidEXT.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_device_anchor_persistence
לפני שמפעילים את xrUnpersistAnchorANDROID. handle
חייב להיות מזהה XrDeviceAnchorPersistenceANDROID תקיןanchorId
חייב להיות הפניה למבנה XrUuidEXT תקין
קודי החזרה
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_OUT_OF_MEMORY
XR_ERROR_LIMIT_REACHED
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
קוד לדוגמה לשמירה של מודעות עוגן
דוגמת הקוד הבאה ממחישה איך לבדוק את יכולות המערכת, לשמור, למנות ולבטל שמירה של עוגנים, וגם ליצור עוגן מהעוגן השמור XrUuidEXT.
XrSession session; // previously initialized
XrSpace anchor; // previously initialized
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrEnumerateSupportedPersistenceAnchorTypesANDROID xrEnumerateSupportedPersistenceAnchorTypesANDROID; // previously initialized
PFN_xrCreateDeviceAnchorPersistenceANDROID xrCreateDeviceAnchorPersistenceANDROID; // previously initialized
PFN_xrDestroyDeviceAnchorPersistenceANDROID xrDestroyDeviceAnchorPersistenceANDROID; // previously initialized
PFN_xrPersistAnchorANDROID xrPersistAnchorANDROID; // previously initialized
PFN_xrGetAnchorPersistStateANDROID xrGetAnchorPersistStateANDROID; // previously initialized
PFN_xrCreatePersistedAnchorSpaceANDROID xrCreatePersistedAnchorSpaceANDROID; // previously initialized
PFN_xrEnumeratePersistedAnchorsANDROID xrEnumeratePersistedAnchorsANDROID; // previously initialized
PFN_xrUnpersistAnchorANDROID xrUnpersistAnchorANDROID; // previously initialized
// Create a device anchor persistence handle
XrDeviceAnchorPersistenceCreateInfoANDROID persistenceHandleCreateInfo;
persistenceHandleCreateInfo.type = XR_TYPE_DEVICE_ANCHOR_PERSISTENCE_CREATE_INFO_ANDROID;
persistenceHandleCreateInfo.next = nullptr;
XrDeviceAnchorPersistenceANDROID persistenceHandle;
CHK_XR(xrCreateDeviceAnchorPersistenceANDROID(session, &persistenceHandleCreateInfo, &persistenceHandle));
/// Persist an anchor
XrPersistedAnchorSpaceInfo anchorSpaceInfo;
anchorSpaceInfo.type = XR_TYPE_PERSISTED_ANCHOR_SPACE_INFO_ANDROID;
anchorSpaceInfo.next = nullptr;
anchorSpaceInfo.anchor = anchor;
XrUuidEXT anchorId;
CHK_XR(xrPersistAnchorANDROID(persistenceHandle, &anchorSpaceInfo, &anchorId));
// ... Update loop ...
// Poll for anchor persist state to confirm if it was successfully persisted
XrAnchorPersistStateANDROID persistState;
CHK_XR(xrGetAnchorPersistStateANDROID(persistenceHandle, &anchorId, &persistState));
if (persistState == XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID) {
// The anchor was persisted successfully
}
// Enumerate all persisted anchors
uint32_t anchorCountOutput = 0;
std::vector<XrUuidEXT> allAnchors;
CHK_XR(xrEnumeratePersistedAnchorsANDROID(
persistenceHandle,
anchorCountOutput,
&anchorCountOutput,
nullptr
));
allAnchors.resize(anchorCountOutput, XR_NULL_HANDLE);
// Fetch the actual anchors in an appropriately resized array.
CHK_XR(xrEnumeratePersistedAnchorsANDROID(
persistenceHandle,
anchorCountOutput,
&anchorCountOutput,
allAnchors.data()
));
// Creating an anchor from a previously persisted anchor using its UUID
XrTime updateTime; // Time used for the current frame's simulation update.
XrUuidEXT anchorId = allAnchors[0];
XrPersistedAnchorSpaceCreateInfo createInfo;
createInfo.type = XR_TYPE_PERSISTED_ANCHOR_CREATE_INFO_ANDROID;
createInfo.next = nullptr;
createInfo.anchorId = anchorId;
XrSpace anchorSpace = XR_NULL_HANDLE;
CHK_XR(xrCreatePersistedAnchorSpaceANDROID(
persistenceHandle,
&createInfo,
&anchorSpace
));
// The anchor was found and retrieved from the local device successfully.
XrSpaceLocation anchorLocation = { XR_TYPE_SPACE_LOCATION };
CHK_XR(xrLocateSpace(anchorSpace, appSpace, updateTime, &anchorLocation));
XrPosef pose = anchorLocation.pose;
// Once app is done with all persistence related tasks
CHK_XR(xrDestroySpace(anchorSpace));
CHK_XR(xrDestroyDeviceAnchorPersistenceANDROID(persistenceHandle));
סוגי אובייקטים חדשים
קבועים חדשים של 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
משתני Enum חדשים
מבנים חדשים
- XrDeviceAnchorPersistenceCreateInfoANDROID
- XrPersistedAnchorSpaceCreateInfoANDROID
- XrPersistedAnchorSpaceInfoANDROID
- XrSystemDeviceAnchorPersistencePropertiesANDROID
פונקציות חדשות
- xrEnumerateSupportedPersistenceAnchorTypesANDROID
- xrCreateDeviceAnchorPersistenceANDROID
- xrDestroyDeviceAnchorPersistenceANDROID
- xrPersistAnchorANDROID
- xrGetAnchorPersistStateANDROID
- xrCreatePersistedAnchorSpaceANDROID
- xrEnumeratePersistedAnchorsANDROID
- xrUnpersistAnchorANDROID
בעיות
היסטוריית הגרסאות
- גרסה 1, 10 באוקטובר 2024 (Kenny Vercaemer)
- תיאור ראשוני של התוסף