Rozszerzenie OpenXR XR_ANDROID_device_anchor_persistence

Ciąg znaków nazwy

XR_ANDROID_device_anchor_persistence

Typ rozszerzenia

Rozszerzenie instancji

Zarejestrowany numer wewnętrzny

458

Weryfikacja

1

Zależności rozszerzenia i wersji

XR_EXT_uuid i XR_ANDROID_trackables

Data ostatniej modyfikacji

2024-10-10

Stan adresu IP

Brak znanych roszczeń dotyczących adresu IP.

Twórcy

Nihav Jain, Google

Levana Chen, Google

Spencer Quin, Google

Kenny Vercaemer, Google

Omówienie

To rozszerzenie umożliwia aplikacji przechowywanie, pobieranie i usuwanie kotwic na bieżącym urządzeniu dla bieżącego użytkownika w ramach sesji aplikacji i urządzenia.

Sprawdzanie możliwości systemu

Struktura XrSystemDeviceAnchorPersistencePropertiesANDROID jest zdefiniowana jako:

typedef struct XrSystemDeviceAnchorPersistencePropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsAnchorPersistence;
} XrSystemDeviceAnchorPersistencePropertiesANDROID;

Opisy członków

  • type to XrStructureType tej struktury.
  • next to NULL lub wskaźnik do następnej struktury w łańcuchu struktury. Nie ma żadnych takich struktur zdefiniowanych w podstawowym OpenXR ani w tym rozszerzeniu.
  • supportsAnchorPersistence to XrBool32 wskazujący, czy bieżący system obsługuje trwałość kotwicy w przypadku kotwic przestrzennych.

Aplikacja może sprawdzić, czy system jest w stanie przechowywać stałe lokalizacje (patrz xrCreateAnchorSpaceANDROID) przez rozszerzenie XrSystemProperties o strukturę XrSystemDeviceAnchorPersistencePropertiesANDROID podczas wywołania xrGetSystemProperties. W przypadku obsługiwanych ścieżek anchora aplikacja może użyć metody xrEnumerateSupportedPersistenceAnchorTypesANDROID, aby zapytać o obsługiwane typy.

Jeśli dla supportsAnchorPersistence zwracana jest wartość XR_FALSE, funkcje trwałości kotwicy na urządzeniu, które działają na podstawie kotwicy przestrzennej, zwracają wartość XR_ERROR_FEATURE_UNSUPPORTED.

Prawidłowe użycie (domyślne)

Funkcja xrEnumerateSupportedPersistenceAnchorTypesANDROID jest zdefiniowana w ten sposób:

XrResult xrEnumerateSupportedPersistenceAnchorTypesANDROID(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    uint32_t                                    trackableTypeCapacityInput,
    uint32_t*                                   trackableTypeCountOutput,
    XrTrackableTypeANDROID*                     trackableTypes);

Opisy parametrów

  • session to XrSession, który tworzy XrDeviceAnchorPersistenceANDROID.
  • trackableTypeCapacityInput to pojemność trackableTypes, a 0 to wymagana pojemność.
  • trackableTypeCountOutput to wskaźnik do liczby tablicy lub wskaźnik do wymaganej pojemności w przypadku, gdy trackableTypeCapacityInput jest niewystarczający.
  • trackableTypes to wskaźnik do tablicy XrTrackableTypeANDROID, ale może być NULL, jeśli trackableTypeCapacityInput to 0.
  • Szczegółowe informacje o pobieraniu wymaganego rozmiaru trackableTypes znajdziesz w sekcji Parametry rozmiaru bufora.

Aplikacja może użyć funkcji xrEnumerateSupportedPersistenceAnchorTypesANDROID, aby sprawdzić, czy obsługuje trwałość kotwicy w przypadku innych obiektów XrTrackableTypeANDROID.

Jeśli dana wartość XrTrackableTypeANDROID nie zostanie zwrócona w tablicy trackableTypes, funkcje trwałości kotwicy urządzenia XR_ERROR_FEATURE_UNSUPPORTED zwracają wartość XR_ERROR_FEATURE_UNSUPPORTED, które działają na kotwicy tego typu.

Prawidłowe użycie (domyślne)

Kody zwrotu

Gotowe

  • XR_SUCCESS

Błąd

  • 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

Tworzenie uchwytu trwałości kotwicy urządzenia

XrDeviceAnchorPersistenceANDROID to uchwyt, który reprezentuje zasoby wymagane do trwałego przechowywania i śledzenia trwałych kotwic.

XR_DEFINE_HANDLE(XrDeviceAnchorPersistenceANDROID)

Funkcja xrCreateDeviceAnchorPersistenceANDROID jest zdefiniowana w ten sposób:

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

Opisy parametrów

Aplikacja może utworzyć identyfikator XrDeviceAnchorPersistenceANDROID, wywołując funkcję xrCreateDeviceAnchorPersistenceANDROID. W kolejnych wywołaniach interfejsu API można użyć parametru XrDeviceAnchorPersistenceANDROID , aby zachować lub usunąć znaczniki. Musisz ostatecznie uwolnić uchwyt XrDeviceAnchorPersistenceANDROID, używając funkcji xrDestroyDeviceAnchorPersistenceANDROID.

Prawidłowe użycie (domyślne)

Kody zwrotu

Gotowe

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Błąd

  • 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

Struktura XrDeviceAnchorPersistenceCreateInfoANDROID jest zdefiniowana jako:

typedef struct XrDeviceAnchorPersistenceCreateInfoANDROID {
    XrStructureType    type;
    void*              next;
} XrDeviceAnchorPersistenceCreateInfoANDROID;

Opisy członków

  • type to XrStructureType tej struktury.
  • next to NULL lub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowym OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.

Struktura XrDeviceAnchorPersistenceCreateInfoANDROID udostępnia opcje tworzenia dla typu XrDeviceAnchorPersistenceANDROID, gdy zostanie przekazana do funkcji xrCreateDeviceAnchorPersistenceANDROID.

Prawidłowe użycie (domyślne)

Funkcja xrDestroyDeviceAnchorPersistenceANDROID jest zdefiniowana jako:

XrResult xrDestroyDeviceAnchorPersistenceANDROID(
    XrDeviceAnchorPersistenceANDROID            handle);

Opisy parametrów

Funkcja xrDestroyDeviceAnchorPersistenceANDROID niszczy uchwyt trwałego odnośnika urządzenia.

Prawidłowe użycie (domyślne)

Bezpieczeństwo wątków

  • Dostęp do handle i wszystkich jego obiektów potomnych musi być zsynchronizowany zewnętrznie.

Kody zwrotu

Gotowe

  • XR_SUCCESS

Błąd

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

Zachowywanie kotwicy

Funkcja xrPersistAnchorANDROID jest zdefiniowana w ten sposób:

XrResult xrPersistAnchorANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    const XrPersistedAnchorSpaceInfoANDROID*    persistedInfo,
    XrUuidEXT*                                  anchorIdOutput);

Opisy parametrów

Aplikacja może poprosić o zapisanie kotwic, wywołując funkcję xrPersistAnchorANDROID. Aplikacja nie może zakładać, że wartość zwracana przez metodę success oznacza, że kotwica została natychmiast zapisana. Aplikacja powinna użyć funkcji xrGetAnchorPersistStateANDROID, aby sprawdzić stan trwałości za pomocą zwróconego parametru XrUuidEXT. Aplikacja może użyć metody xrUnpersistAnchorANDROID, aby usunąć trwałość zakotwiczenia.

  • Jeśli w momencie wywołania nie jest śledzona żadna pozycja, zwracana jest wartość XR_ERROR_ANCHOR_NOT_TRACKING_ANDROID.
  • XR_SUCCESS zostanie zwrócony, gdy kotwnik zostanie umieszczony w kolejce w celu zachowania.

Prawidłowe użycie (domyślne)

Kody zwrotu

Gotowe

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Błąd

  • 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

Struktura XrPersistedAnchorSpaceInfoANDROID jest zdefiniowana w ten sposób:

typedef struct XrPersistedAnchorSpaceInfoANDROID {
    XrStructureType    type;
    void*              next;
    XrSpace            anchor;
} XrPersistedAnchorSpaceInfoANDROID;

Opisy członków

  • type to XrStructureType tej struktury.
  • next to NULL lub wskaźnik do następnej struktury w łańcuchu struktury. W podstawowym OpenXR ani w tym rozszerzeniu nie zdefiniowano żadnych takich struktur.
  • anchor to zakotwiczony XrSpace utworzony wcześniej przez funkcję xrCreateAnchorSpaceANDROID w celu zachowania.

Prawidłowe użycie (domyślne)

Funkcja xrGetAnchorPersistStateANDROID jest zdefiniowana w ten sposób:

XrResult xrGetAnchorPersistStateANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    const XrUuidEXT*                            anchorId,
    XrAnchorPersistStateANDROID*                persistState);

Opisy parametrów

  • handle to XrDeviceAnchorPersistenceANDROID.
  • anchorId to XrUuidEXT kotwicy.
  • persistState to wskaźnik do XrAnchorPersistStateANDROID, w którym zwracany jest stan kotwicy.
  • Jeśli nie uda się znaleźć elementu zaczepu XrUuidEXT, zwrócona zostanie wartość XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID.
  • Jeśli zapisane dane anchorId nie są gotowe, zwrócona zostanie wartość XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID.

Prawidłowe użycie (domyślne)

Kody zwrotu

Gotowe

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Błąd

  • 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

Wyliczenie XrAnchorPersistStateANDROID jest zdefiniowane w ten sposób:

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;

Wyliczenie

Opis

XR_ANCHOR_PERSIST_STATE_PERSIST_NOT_REQUESTED_ANDROID

Aplikacja nie poprosiła o zapisanie kotwicy.

XR_ANCHOR_PERSIST_STATE_PERSIST_PENDING_ANDROID

Ank został zapisany, ale nie został jeszcze zapisany.

XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID

Punkt kotwiczenia został zapisany przez środowisko uruchomieniowe.

Tworzenie kotwicy na podstawie utrwalonych danych

Funkcja xrCreatePersistedAnchorSpaceANDROID jest zdefiniowana w ten sposób:

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

Opisy parametrów

Aplikacja może utworzyć kotwicę XrSpace na podstawie wcześniej zapisanej kotwicy, wywołując funkcję xrCreatePersistedAnchorSpaceANDROID z tym samym parametrem XrUuidEXT. Jest to inny sposób tworzenia kotwic zgodnie z definicją w XR_ANDROID_trackables.

  • Jeśli nie uda się znaleźć elementu zaczepu XrUuidEXT, zwrócona zostanie wartość XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID.

Prawidłowe użycie (domyślne)

Kody zwrotu

Gotowe

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Błąd

  • 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

Struktura XrPersistedAnchorSpaceCreateInfoANDROID jest zdefiniowana jako:

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

Opisy członków

  • type to XrStructureType tej struktury.
  • next to NULL lub wskaźnik do następnej struktury w łańcuchu struktury. Nie ma żadnych takich struktur zdefiniowanych w podstawowym OpenXR ani w tym rozszerzeniu.
  • anchorId to XrUuidEXT zapisanej kotwicy, na podstawie której można utworzyć kotwicę XrSpace.

Struktura XrPersistedAnchorSpaceCreateInfoANDROID udostępnia opcje tworzenia kotwicy, gdy jest ona przekazywana do funkcji xrCreateDeviceAnchorPersistenceANDROID.

Prawidłowe użycie (domyślne)

Wyliczanie trwałych kotwic

Funkcja xrEnumeratePersistedAnchorsANDROID jest zdefiniowana w ten sposób:

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

Opisy parametrów

  • handle to XrDeviceAnchorPersistenceANDROID.
  • anchorIdsCapacityInput to pojemność tablicy anchorIds, a 0 oznacza prośbę o pobranie wymaganej pojemności.
  • anchorIdsCountOutput to wskaźnik liczby zapisanych elementów anchorIds lub wskaźnik wymaganej pojemności w przypadku, gdy anchorIdsCapacityInput jest niewystarczająca.
  • anchorIds to wskaźnik do tablicy struktur XrUuidEXT. Może ona wynosić NULL, jeśli anchorIdsCapacityInput = 0.
  • Szczegółowe informacje o pobieraniu wymaganego rozmiaru anchorIds znajdziesz w sekcji Parametry rozmiaru bufora.

Aplikacja może wyliczyć wszystkie bieżące trwałe odnośniki, wywołując funkcję xrEnumeratePersistedAnchorsANDROID. Tablica anchorIds będzie przechowywać identyfikatory UUID zapisane w pliku w ramach dostępnej pojemności tablicy. Jeśli pojemność jest niewystarczająca, aplikacje nie mają gwarancji, które kotwy zostaną zwrócone.

Prawidłowe użycie (domyślne)

Kody zwrotu

Gotowe

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Błąd

  • 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

Odzyskiwanie trwałego zakotwiczenia

Funkcja xrUnpersistAnchorANDROID jest zdefiniowana w ten sposób:

XrResult xrUnpersistAnchorANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    const XrUuidEXT*                            anchorId);

Opisy parametrów

Aplikacja może usunąć trwałą kotwicę, wywołując metodę xrUnpersistAnchorANDROID i przekazując XrUuidEXT kotwicy, którą ma usunąć.

  • Jeśli zapisane dane nie są gotowe, zwracana jest wartość XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID.
  • Jeśli nie uda się znaleźć elementu zaczepu XrUuidEXT, zwrócona zostanie wartość XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID.

Prawidłowe użycie (domyślne)

Kody zwrotu

Gotowe

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Błąd

  • 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

Przykładowy kod zapewniający trwałość kotwicy

Poniższy przykładowy kod pokazuje, jak sprawdzić możliwości systemu, zapisać, wyliczyć i usunąć z pamięci zapisane kotwy oraz utworzyć kotwę z zapisanej kotwy 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));

Nowe typy obiektów

Nowe stałe typu wyliczeniowego

Wyliczenie XrObjectType zostało rozszerzone o:

  • XR_OBJECT_TYPE_DEVICE_ANCHOR_PERSISTENCE_ANDROID

Wyliczenie XrResult zostało rozszerzone o:

  • 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

Wyliczenie XrStructureType zostało rozszerzone o:

  • 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

Nowe wartości w polu enum

Nowe struktury

Nowe funkcje

Problemy

Historia wersji

  • Wersja 1, 10 października 2024 r. (Kenny Vercaemer)
    • Początkowy opis rozszerzenia