Chuỗi tên
XR_ANDROID_device_anchor_persistence
Loại phần mở rộng
Tiện ích thực thể
Số điện thoại mở rộng đã đăng ký
458
Bản sửa đổi
1
Phần mở rộng và phần phụ thuộc phiên bản
XR_EXT_uuid
và XR_ANDROID_trackables
Ngày sửa đổi gần đây nhất
2024-10-10
Trạng thái IP
Không có thông báo xác nhận quyền sở hữu đối với tài sản trí tuệ nào.
Cộng tác viên
Nihav Jain, Google
Levana Chen, Google
Spencer Quin, Google
Kenny Vercaemer, Google
Tổng quan
Tiện ích này cho phép ứng dụng duy trì, truy xuất và huỷ duy trì các neo trên thiết bị hiện tại cho người dùng hiện tại, trên các ứng dụng và phiên thiết bị.
Kiểm tra chức năng của hệ thống
Cấu trúc XrSystemDeviceAnchorPersistencePropertiesANDROID được xác định là:
typedef struct XrSystemDeviceAnchorPersistencePropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsAnchorPersistence;
} XrSystemDeviceAnchorPersistencePropertiesANDROID;
Nội dung mô tả thành viên
type
là XrStructureType của cấu trúc này.next
làNULL
hoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.supportsAnchorPersistence
làXrBool32
cho biết liệu hệ thống hiện tại có hỗ trợ tính năng liên kết cố định cho neo không gian hay không.
Ứng dụng có thể kiểm tra xem hệ thống có thể duy trì các neo không gian hay không (xem xrCreateAnchorSpaceANDROID) bằng cách mở rộng XrSystemProperties bằng cấu trúc XrSystemDeviceAnchorPersistencePropertiesANDROID khi gọi xrGetSystemProperties. Đối với các neo có thể theo dõi được, ứng dụng có thể sử dụng xrEnumerateSupportedPersistenceAnchorTypesANDROID để truy vấn các loại được hỗ trợ.
Nếu XR_FALSE
được trả về cho supportsAnchorPersistence
, thì XR_ERROR_FEATURE_UNSUPPORTED
sẽ được trả về từ các hàm liên tục của neo thiết bị hoạt động trên neo không gian.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_device_anchor_persistence
trước khi sử dụng XrSystemDeviceAnchorPersistencePropertiesANDROID type
phải làXR_TYPE_SYSTEM_DEVICE_ANCHOR_PERSISTENCE_PROPERTIES_ANDROID
next
phải làNULL
hoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc
Hàm xrEnumerateSupportedPersistenceAnchorTypesANDROID được xác định là:
XrResult xrEnumerateSupportedPersistenceAnchorTypesANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t trackableTypeCapacityInput,
uint32_t* trackableTypeCountOutput,
XrTrackableTypeANDROID* trackableTypes);
Nội dung mô tả thông số
session
là XrSession tạo XrDeviceAnchorPersistenceANDROID.trackableTypeCapacityInput
là dung lượng củatrackableTypes
hoặc 0 để truy xuất dung lượng cần thiết.trackableTypeCountOutput
là con trỏ đến số lượng mảng hoặc con trỏ đến dung lượng bắt buộc trong trường hợptrackableTypeCapacityInput
không đủ.trackableTypes
là con trỏ đến một mảng XrTrackableTypeANDROID, nhưng có thể làNULL
nếutrackableTypeCapacityInput
là0
.- Hãy xem phần Tham số kích thước bộ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước
trackableTypes
bắt buộc.
Ứng dụng có thể sử dụng xrEnumerateSupportedPersistenceAnchorTypesANDROID để kiểm tra xem có hỗ trợ tính năng liên kết cố định trên các đối tượng có thể theo dõi XrTrackableTypeANDROID khác hay không.
Nếu một XrTrackableTypeANDROID nhất định không được trả về trong mảng trackableTypes
, thì XR_ERROR_FEATURE_UNSUPPORTED
sẽ được trả về từ các hàm liên kết cố định của thiết bị hoạt động trên một liên kết thuộc loại đó.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_device_anchor_persistence
trước khi gọi xrEnumerateSupportedPersistenceAnchorTypesANDROID instance
phải là một tay cầm XrInstance hợp lệtrackableTypeCountOutput
phải là con trỏ đến giá trịuint32_t
- Nếu
trackableTypeCapacityInput
không phải là0, trackableTypes
, thì phải là con trỏ đến một mảng các giá trịtrackableTypeCapacityInput
XrTrackableTypeANDROID
Mã trả về
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
Tạo một tay điều khiển cố định của thiết bị
XrDeviceAnchorPersistenceANDROID là một tay cầm đại diện cho các tài nguyên cần thiết để duy trì và theo dõi các neo đã lưu giữ.
XR_DEFINE_HANDLE(XrDeviceAnchorPersistenceANDROID)
Hàm xrCreateDeviceAnchorPersistenceANDROID được xác định như sau:
XrResult xrCreateDeviceAnchorPersistenceANDROID(
XrSession session,
const XrDeviceAnchorPersistenceCreateInfoANDROID* createInfo,
XrDeviceAnchorPersistenceANDROID* outHandle);
Nội dung mô tả thông số
session
là XrSession tạo XrDeviceAnchorPersistenceANDROID.createInfo
là XrDeviceAnchorPersistenceCreateInfoANDROID chứa các tham số cho XrDeviceAnchorPersistenceANDROID.outHandle
là con trỏ đến một tay cầm trong đó XrDeviceAnchorPersistenceANDROID đã tạo được trả về.
Ứng dụng có thể tạo một tay điều khiển XrDeviceAnchorPersistenceANDROID bằng cách gọi xrCreateDeviceAnchorPersistenceANDROID. Bạn có thể sử dụng XrDeviceAnchorPersistenceANDROID trong các lệnh gọi API tiếp theo để duy trì hoặc huỷ duy trì neo. Cuối cùng, bạn phải giải phóng tay điều khiển XrDeviceAnchorPersistenceANDROID bằng hàm xrDestroyDeviceAnchorPersistenceANDROID.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_device_anchor_persistence
trước khi gọi xrCreateDeviceAnchorPersistenceANDROID session
phải là một tay cầm XrSession hợp lệcreateInfo
phải là con trỏ đến cấu trúc XrDeviceAnchorPersistenceCreateInfoANDROID hợp lệoutHandle
phải là con trỏ đến một tay cầm XrDeviceAnchorPersistenceANDROID
Mã trả về
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
Cấu trúc XrDeviceAnchorPersistenceCreateInfoANDROID được xác định là:
typedef struct XrDeviceAnchorPersistenceCreateInfoANDROID {
XrStructureType type;
void* next;
} XrDeviceAnchorPersistenceCreateInfoANDROID;
Nội dung mô tả thành viên
type
là XrStructureType của cấu trúc này.next
làNULL
hoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.
Cấu trúc XrDeviceAnchorPersistenceCreateInfoANDROID cung cấp các tuỳ chọn tạo cho XrDeviceAnchorPersistenceANDROID khi được truyền đến xrCreateDeviceAnchorPersistenceANDROID.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_device_anchor_persistence
trước khi sử dụng XrDeviceAnchorPersistenceCreateInfoANDROID type
phải làXR_TYPE_DEVICE_ANCHOR_PERSISTENCE_CREATE_INFO_ANDROID
next
phải làNULL
hoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc
Hàm xrDestroyDeviceAnchorPersistenceANDROID được định nghĩa là:
XrResult xrDestroyDeviceAnchorPersistenceANDROID(
XrDeviceAnchorPersistenceANDROID handle);
Nội dung mô tả thông số
handle
là một tay cầm XrDeviceAnchorPersistenceANDROID doxrCreateDeviceAnchorPersistenceANDROID
tạo trước đó.
Hàm xrDestroyDeviceAnchorPersistenceANDROID sẽ huỷ bỏ tay điều khiển liên tục của neo thiết bị.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_device_anchor_persistence
trước khi gọi xrDestroyDeviceAnchorPersistenceANDROID handle
phải là một tay cầm XrDeviceAnchorPersistenceANDROID hợp lệ
Độ an toàn cho luồng
- Quyền truy cập vào
handle
và mọi tay điều khiển con phải được đồng bộ hoá bên ngoài
Mã trả về
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_HANDLE_INVALID
Duy trì neo
Hàm xrPersistAnchorANDROID được xác định là:
XrResult xrPersistAnchorANDROID(
XrDeviceAnchorPersistenceANDROID handle,
const XrPersistedAnchorSpaceInfoANDROID* persistedInfo,
XrUuidEXT* anchorIdOutput);
Nội dung mô tả thông số
handle
là XrDeviceAnchorPersistenceANDROID.persistedInfo
là XrPersistedAnchorSpaceInfoANDROID chứa các tham số cho tính năng liên kết cố định.anchorIdOutput
là con trỏ trỏ đến XrUuidEXT, trong đó trả về UUID của neo ổn định.
Ứng dụng có thể yêu cầu neo được duy trì bằng cách gọi xrPersistAnchorANDROID. Ứng dụng không được giả định rằng giá trị trả về thành công có nghĩa là neo được duy trì ngay lập tức. Ứng dụng nên sử dụng xrGetAnchorPersistStateANDROID để kiểm tra trạng thái ổn định của neo bằng cách sử dụng neo được trả về XrUuidEXT. Ứng dụng có thể sử dụng xrUnpersistAnchorANDROID để huỷ lưu trữ liên kết.
XR_ERROR_ANCHOR_NOT_TRACKING_ANDROID
sẽ được trả về nếu neo không được theo dõi tại thời điểm gọi.XR_SUCCESS
sẽ được trả về sau khi neo được đưa vào hàng đợi để lưu trữ.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_device_anchor_persistence
trước khi gọi xrPersistAnchorANDROID handle
phải là một tay cầm XrDeviceAnchorPersistenceANDROID hợp lệpersistedInfo
phải là con trỏ đến một cấu trúc XrPersistedAnchorSpaceInfoANDROID hợp lệanchorIdOutput
phải là con trỏ đến cấu trúc XrUuidEXT
Mã trả về
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
Cấu trúc XrPersistedAnchorSpaceInfoANDROID được xác định là:
typedef struct XrPersistedAnchorSpaceInfoANDROID {
XrStructureType type;
void* next;
XrSpace anchor;
} XrPersistedAnchorSpaceInfoANDROID;
Nội dung mô tả thành viên
type
là XrStructureType của cấu trúc này.next
làNULL
hoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.anchor
là một XrSpace neo do xrCreateAnchorSpaceANDROID tạo trước đó để duy trì.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_device_anchor_persistence
trước khi sử dụng XrPersistedAnchorSpaceInfoANDROID type
phải làXR_TYPE_PERSISTED_ANCHOR_SPACE_INFO_ANDROID
next
phải làNULL
hoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúcanchor
phải là một tên người dùng XrSpace hợp lệ
Hàm xrGetAnchorPersistStateANDROID được xác định là:
XrResult xrGetAnchorPersistStateANDROID(
XrDeviceAnchorPersistenceANDROID handle,
const XrUuidEXT* anchorId,
XrAnchorPersistStateANDROID* persistState);
Nội dung mô tả thông số
handle
là XrDeviceAnchorPersistenceANDROID.anchorId
là XrUuidEXT của neo.persistState
là con trỏ đến XrAnchorPersistStateANDROID, trong đó trạng thái của neo được trả về.XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
sẽ được trả về nếu không tìm thấy neo XrUuidEXT.XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
sẽ được trả về nếu dữ liệu ổn định củaanchorId
chưa sẵn sàng.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_device_anchor_persistence
trước khi gọi xrGetAnchorPersistStateANDROID handle
phải là một tay cầm XrDeviceAnchorPersistenceANDROID hợp lệanchorId
phải là con trỏ đến cấu trúc XrUuidEXT hợp lệpersistState
phải là con trỏ đến giá trị XrAnchorPersistStateANDROID
Mã trả về
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
Enum XrAnchorPersistStateANDROID
được xác định là:
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 |
Nội dung mô tả |
|
Ứng dụng chưa yêu cầu neo cố định. |
|
Bạn đã yêu cầu lưu trữ liên kết cố định nhưng chưa lưu trữ. |
|
Thời gian chạy đã lưu trữ thành công neo. |
Tạo một neo từ dữ liệu ổn định
Hàm xrCreatePersistedAnchorSpaceANDROID được xác định như sau:
XrResult xrCreatePersistedAnchorSpaceANDROID(
XrDeviceAnchorPersistenceANDROID handle,
const XrPersistedAnchorSpaceCreateInfoANDROID* createInfo,
XrSpace* anchorOutput);
Nội dung mô tả thông số
handle
là XrDeviceAnchorPersistenceANDROID.createInfo
là XrPersistedAnchorSpaceCreateInfoANDROID chứa các tham số để tạo neo.anchorOutput
là con trỏ đến một XrSpace, trong đó không gian neo mới được trả về.
Ứng dụng có thể tạo một neo XrSpace từ một neo đã tồn tại trước đó bằng cách gọi xrCreatePersistedAnchorSpaceANDROID với cùng một XrUuidEXT. Đây là một cách khác để tạo neo như được xác định trong XR_ANDROID_trackables
.
XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
sẽ được trả về nếu không tìm thấy neo XrUuidEXT.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_device_anchor_persistence
trước khi gọi xrCreatePersistedAnchorSpaceANDROID handle
phải là một tay cầm XrDeviceAnchorPersistenceANDROID hợp lệcreateInfo
phải là con trỏ đến cấu trúc XrPersistedAnchorSpaceCreateInfoANDROID hợp lệanchorOutput
phải là con trỏ đến tên người dùng XrSpace
Mã trả về
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
Cấu trúc XrPersistedAnchorSpaceCreateInfoANDROID được định nghĩa là:
typedef struct XrPersistedAnchorSpaceCreateInfoANDROID {
XrStructureType type;
void* next;
XrUuidEXT anchorId;
} XrPersistedAnchorSpaceCreateInfoANDROID;
Nội dung mô tả thành viên
type
là XrStructureType của cấu trúc này.next
làNULL
hoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.anchorId
là XrUuidEXT của neo cố định để tạo neo XrSpace.
Cấu trúc XrPersistedAnchorSpaceCreateInfoANDROID cung cấp các tuỳ chọn tạo cho neo khi được truyền đến xrCreateDeviceAnchorPersistenceANDROID.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_device_anchor_persistence
trước khi sử dụng XrPersistedAnchorSpaceCreateInfoANDROID type
phải làXR_TYPE_PERSISTED_ANCHOR_SPACE_CREATE_INFO_ANDROID
next
phải làNULL
hoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc
Liệt kê các neo cố định
Hàm xrEnumeratePersistedAnchorsANDROID được xác định là:
XrResult xrEnumeratePersistedAnchorsANDROID(
XrDeviceAnchorPersistenceANDROID handle,
uint32_t anchorIdsCapacityInput,
uint32_t* anchorIdsCountOutput,
XrUuidEXT* anchorIds);
Nội dung mô tả thông số
handle
là XrDeviceAnchorPersistenceANDROID.anchorIdsCapacityInput
là dung lượng của mảnganchorIds
hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.anchorIdsCountOutput
là con trỏ đến số lượnganchorIds
đã ghi hoặc con trỏ đến dung lượng cần thiết trong trường hợpanchorIdsCapacityInput
không đủ.anchorIds
là con trỏ trỏ đến một mảng cấu trúc XrUuidEXT. Giá trị này có thể làNULL
nếuanchorIdsCapacityInput
là 0.- Hãy xem phần Tham số kích thước bộ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước
anchorIds
bắt buộc.
Ứng dụng có thể liệt kê tất cả các neo cố định hiện tại bằng cách gọi xrEnumeratePersistedAnchorsANDROID. anchorIds
sẽ lưu trữ các UUID của neo cố định trong phạm vi dung lượng của mảng. Nếu dung lượng không đủ, ứng dụng không được đảm bảo về việc neo nào sẽ được trả về.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_device_anchor_persistence
trước khi gọi xrEnumeratePersistedAnchorsANDROID handle
phải là một tay cầm XrDeviceAnchorPersistenceANDROID hợp lệanchorIdsCountOutput
phải là con trỏ đến giá trịuint32_t
- Nếu
anchorIdsCapacityInput
không phải là0, anchorIds
, phải là con trỏ đến một mảng các cấu trúcanchorIdsCapacityInput
XrUuidEXT
Mã trả về
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
Huỷ lưu trữ một neo cố định
Hàm xrUnpersistAnchorANDROID được xác định là:
XrResult xrUnpersistAnchorANDROID(
XrDeviceAnchorPersistenceANDROID handle,
const XrUuidEXT* anchorId);
Nội dung mô tả thông số
handle
là XrDeviceAnchorPersistenceANDROID.anchorId
là XrUuidEXT của neo để huỷ lưu trữ.
Ứng dụng có thể huỷ lưu trữ một neo cố định bằng cách gọi xrUnpersistAnchorANDROID và truyền neo XrUuidEXT của neo để huỷ lưu trữ.
XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
sẽ được trả về nếu dữ liệu ổn định chưa sẵn sàng.XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
sẽ được trả về nếu không tìm thấy neo XrUuidEXT.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_device_anchor_persistence
trước khi gọi xrUnpersistAnchorANDROID handle
phải là một tay cầm XrDeviceAnchorPersistenceANDROID hợp lệanchorId
phải là con trỏ đến cấu trúc XrUuidEXT hợp lệ
Mã trả về
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
Mã ví dụ về tính năng liên kết cố định
Mã ví dụ sau đây minh hoạ cách kiểm tra chức năng của hệ thống, lưu trữ, liệt kê và huỷ lưu trữ neo, cũng như tạo neo từ neo đã lưu trữ 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));
Các loại đối tượng mới
Hằng số enum mới
Bổ sung enum XrObjectType bằng:
XR_OBJECT_TYPE_DEVICE_ANCHOR_PERSISTENCE_ANDROID
Bổ sung enum XrResult bằng:
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
Bổ sung enum 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 mới
Cấu trúc mới
- XrDeviceAnchorPersistenceCreateInfoANDROID
- XrPersistedAnchorSpaceCreateInfoANDROID
- XrPersistedAnchorSpaceInfoANDROID
- XrSystemDeviceAnchorPersistencePropertiesANDROID
Hàm mới
- xrEnumerateSupportedPersistenceAnchorTypesANDROID
- xrCreateDeviceAnchorPersistenceANDROID
- xrDestroyDeviceAnchorPersistenceANDROID
- xrPersistAnchorANDROID
- xrGetAnchorPersistStateANDROID
- xrCreatePersistedAnchorSpaceANDROID
- xrEnumeratePersistedAnchorsANDROID
- xrUnpersistAnchorANDROID
Vấn đề
Nhật ký phiên bản
- Bản sửa đổi 1, ngày 10 tháng 10 năm 2024 (Kenny Vercaemer)
- Nội dung mô tả ban đầu của tiện ích