XR_ANDROID_depth_texture OpenXR uzantısı

Ad dizesi

XR_ANDROID_depth_texture

Uzantı Türü

Örnek uzatma

Kayıtlı Uzatma Numarası

703

Düzeltme

1

Uzantı ve Sürüm Bağımlılıkları

OpenXR 1.0

Son Değiştirilme Tarihi

2024-09-11

IP Durumu

Bilinen IP hak talepleri yok.

Katkıda bulunanlar

Sushant Kulkarni, Google

Cairn Overturf, Google

Spencer Quin, Google

Levana Chen, Google

Genel Bakış

Bu uzantı, uygulamanın kulaklığın etrafındaki gerçek dünya ortamının derinlik haritalarını istemesine ve oluşturulurken desteklenen derinlik çözünürlüklerini sorgulamasına olanak tanır.

Bu uzantı, gölgeleme, isabet testleri ve doğru sahne geometrisinden yararlanan diğer belirli görevler (ör. sahte yüz algılama) için ham ve pürüzsüz derinlik göstermeyi amaçlar.

Sistem kapasitesini inceleme

XrSystemDepthTrackingPropertiesANDROID yapısı şu şekilde tanımlanır:

typedef struct XrSystemDepthTrackingPropertiesANDROID {
    XrStructureType    type;
    const void*        next;
    XrBool32           supportsDepthTracking;
} XrSystemDepthTrackingPropertiesANDROID;

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.
  • supportsDepthTracking, mevcut sistemin derinlik izlemeyi destekleyip desteklemediğini belirten bir XrBool32 değeridir.

Bir uygulama, xrGetSystemProperties çağrısında XrSystemProperties'i XrSystemDepthTrackingPropertiesANDROID yapısıyla genişleterek sistemin derinlik izleme yapıp yapamayacağını inceleyebilir.

Geçerli Kullanım (Dolayı)

Sorgu derinliği çözümleri

xrEnumerateDepthResolutionsANDROID işlevi şu şekilde tanımlanır:

XrResult xrEnumerateDepthResolutionsANDROID(
    XrSession                                   session,
    uint32_t                                    resolutionCapacityInput,
    uint32_t*                                   resolutionCountOutput,
    XrDepthCameraResolutionANDROID*             resolutions);

Parametre Açıklamaları

  • session, desteklenen derinlik çözünürlüklerini listeleyen XrSession bağımsız değişkenidir.
  • resolutionCapacityInput, resolutions öğesinin kapasitesidir veya gerekli kapasiteyi almak için 0 değerini alır.
  • resolutionCountOutput, yazılan uint64_t resolutions sayısının işaretçisidir veya resolutionCapacityInput yetersiz olduğunda gereken kapasitenin işaretçisidir.
  • resolutions, XrDepthCameraResolutionANDROID dizisinin işaretçisidir ancak resolutionCapacityInput 0 ise NULL olabilir.
  • Gerekli resolutions boyutunu almayla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

xrEnumerateDepthResolutionsANDROID, geçerli oturum tarafından desteklenen derinlik çözünürlüklerini listeler. Derinlik çözünürlükleri, en yüksekten en düşüğe doğru çalışma zamanı tercihine göre olmalıdır. Uygulama, optimum performans ve kalite için desteklediği en yüksek tercihi kullanmalıdır.

Geçerli Kullanım (Dolayı)

İade Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

XrDepthCameraResolutionANDROID enum, XrDepthSwapchainANDROID oluştururken desteklenen derinlik çözünürlüklerini açıklar.

typedef enum XrDepthCameraResolutionANDROID {
    XR_DEPTH_CAMERA_RESOLUTION_80x80_ANDROID = 0,
    XR_DEPTH_CAMERA_RESOLUTION_160x160_ANDROID = 1,
    XR_DEPTH_CAMERA_RESOLUTION_320x320_ANDROID = 2
    } XrDepthCameraResolutionANDROID;

Listeleme Açıklamaları

  • XR_DEPTH_CAMERA_RESOLUTION_80x80_ANDROID: Derinlik ve güven resimlerinin çözünürlüğü 80x80'tir.
  • XR_DEPTH_CAMERA_RESOLUTION_160x160_ANDROID: Derinlik ve güven resimlerinin çözünürlüğü 160x160'tır.
  • XR_DEPTH_CAMERA_RESOLUTION_320x320_ANDROID: Derinlik ve güven resimlerinin çözünürlüğü 320x320'tir.

Derinlik takas zinciri oluşturma

XR_DEFINE_HANDLE(XrDepthSwapchainANDROID)

XrDepthSwapchainANDROID, derinlik takas zinciri saplarıdır.

xrCreateDepthSwapchainANDROID işlevi şu şekilde tanımlanır:

XrResult xrCreateDepthSwapchainANDROID(
    XrSession                                   session,
    const XrDepthSwapchainCreateInfoANDROID*    createInfo,
    XrDepthSwapchainANDROID*                    swapchain);

Parametre Açıklamaları

Uygulama, hem derinlik hem de güvenilirlik resimlerini yöneten bir derinlik takas zinciri oluşturmak için xrCreateDepthSwapchainANDROID işlevini kullanabilir.

Döndürülen derinlik takas zinciri daha sonra API çağrılarında kullanılabilir. XrDepthSwapchainANDROID mülkünün xrDestroyDepthSwapchainANDROID işlevi kullanılarak serbest bırakılması gerekir.

Geçerli Kullanım (Dolayı)

İade Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_LIMIT_REACHED

XrDepthSwapchainCreateInfoANDROID yapısı şu şekilde tanımlanır:

typedef struct XrDepthSwapchainCreateInfoANDROID {
    XrStructureType                       type;
    const void*                           next;
    XrDepthCameraResolutionANDROID        resolution;
    XrDepthSwapchainCreateFlagsANDROID    createFlags;
} XrDepthSwapchainCreateInfoANDROID;

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.
  • resolution, derinlik ve güven dokularının oluşturulması gereken XrDepthCameraResolutionANDROID değeridir.
  • createFlags, bir veya daha fazla XrDepthSwapchainCreateFlagsANDROID bağımsız değişkenidir.

XrDepthSwapchainCreateInfoANDROID yapısı, xrCreateDepthSwapchainANDROID işlevine aktarıldığında XrDepthSwapchainANDROID için oluşturma seçenekleri sağlar.

Geçerli Kullanım (Dolayı)

XrDepthSwapchainCreateFlagsANDROID, XrDepthSwapchainANDROID için oluşturma seçeneklerini belirtir.

typedef XrFlags64 XrDepthSwapchainCreateFlagsANDROID;

XrDepthSwapchainCreateFlagsANDROID için geçerli bitler, XrDepthSwapchainCreateFlagBitsANDROID tarafından tanımlanır ve şu şekilde belirtilir:

// Flag bits for XrDepthSwapchainCreateFlagsANDROID
static const XrDepthSwapchainCreateFlagsANDROID XR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_DEPTH_IMAGE_BIT_ANDROID = 0x00000001;
static const XrDepthSwapchainCreateFlagsANDROID XR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_CONFIDENCE_IMAGE_BIT_ANDROID = 0x00000002;
static const XrDepthSwapchainCreateFlagsANDROID XR_DEPTH_SWAPCHAIN_CREATE_RAW_DEPTH_IMAGE_BIT_ANDROID = 0x00000004;
static const XrDepthSwapchainCreateFlagsANDROID XR_DEPTH_SWAPCHAIN_CREATE_RAW_CONFIDENCE_IMAGE_BIT_ANDROID = 0x00000008;

xrDestroyDepthSwapchainANDROID işlevi şu şekilde tanımlanır:

XrResult xrDestroyDepthSwapchainANDROID(
    XrDepthSwapchainANDROID                     swapchain);

Parametre Açıklamaları

  • swapchain, daha önce xrCreateDepthSwapchainANDROID tarafından oluşturulmuş bir XrDepthSwapchainANDROID dizinidir.

xrDestroyDepthSwapchainANDROID işlevi, derinlik takas zincirini yok eder.

Geçerli Kullanım (Dolayı)

Thread Güvenliği

  • swapchain ve alt herkese açık kimliklere erişim, harici olarak senkronize edilmelidir.

İade Kodları

Başarılı

  • XR_SUCCESS

Hata

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

Derinlik dokularına erişme

xrEnumerateDepthSwapchainImagesANDROID işlevi şu şekilde tanımlanır:

XrResult xrEnumerateDepthSwapchainImagesANDROID(
    XrDepthSwapchainANDROID                     depthSwapchain,
    uint32_t                                    depthImageCapacityInput,
    uint32_t*                                   depthImageCountOutput,
    XrDepthSwapchainImageANDROID*               depthImages);

Parametre Açıklamaları

  • depthSwapchain, resimlerin alınacağı XrDepthSwapchainANDROID bağımsız değişkenidir.
  • depthImageCapacityInput, depthImages dizisinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0 değerini alır.
  • depthImageCountOutput, yazılan depthImages sayısının işaretçisidir veya depthImageCapacityInput yetersiz olduğunda gereken kapasitenin işaretçisidir.
  • depthImages, XrDepthSwapchainImageANDROID yapılarının bir dizisinin işaretçisidir. depthImageCapacityInput 0 ise NULL olabilir.
  • Gerekli depthImages boyutunu almayla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

xrEnumerateDepthSwapchainImagesANDROID, XrDepthSwapchainImageANDROID yapılarının bir dizisini doldurur. Kaynaklar, XrDepthSwapchainANDROID'ın kullanım ömrü boyunca sabit ve geçerli olur. Bu işlev, xrEnumerateSwapchainImages işlevine benzer şekilde çalışır.

Geçerli Kullanım (Dolayı)

İade Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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

XrDepthSwapchainImageANDROID yapısı şu şekilde tanımlanır:

typedef struct XrDepthSwapchainImageANDROID {
    XrStructureType    type;
    void*              next;
    const float*       rawDepthImage;
    const uint8_t*     rawDepthConfidenceImage;
    const float*       smoothDepthImage;
    const uint8_t*     smoothDepthConfidenceImage;
} XrDepthSwapchainImageANDROID;

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.
  • rawDepthImage, NULL veya hem sol hem de sağ görünümler için ham derinlik görüntülerinin işaretçisidir. Değerler metre cinsindendir. Özel değerler: 0.0, ham derinlikte geçersiz veya boş bir derinlik pikseli gösterir, Inf ise etkili bir şekilde sonsuz uzaklıktaki bilinen derinliği gösterir.
  • rawDepthConfidenceImage, NULL veya hem sol hem de sağ görünümler için ham derinlik güvenilirlik resimlerinin işaretçisidir.
  • smoothDepthImage, NULL veya hem sol hem de sağ görünümler için derinlik görüntülerini yumuşatan işaretçidir. Değerler metre cinsindendir. Özel değerler: 0.0, pürüzsüz derinlikte geçersiz veya boş bir derinlik pikseli gösterir, Inf ise sonsuz uzaklıktaki bilinen derinliği gösterir.
  • smoothDepthConfidenceImage, NULL veya hem sol hem de sağ görünümler için derinlik güvenilirliği resimlerini yumuşatan işaretçidir.

XrDepthSwapchainImageANDROID, xrCreateDepthSwapchainANDROID çağrılırken XrDepthSwapchainCreateInfoANDROID::resolution ve XrDepthSwapchainCreateInfoANDROID::createFlags bölümünde açıklandığı şekilde ayrılan, okunabilir bir XrDepthSwapchainANDROID'daki derinlik görüntülerini temsil eder. Her derinlik resmi için:

Geçerli Kullanım (Dolayı)

xrAcquireDepthSwapchainImagesANDROID işlevi şu şekilde tanımlanır:

XrResult xrAcquireDepthSwapchainImagesANDROID(
    XrDepthSwapchainANDROID                     depthSwapchain,
    const XrDepthAcquireInfoANDROID*            acquireInfo,
    XrDepthAcquireResultANDROID*                acquireResult);

Parametre Açıklamaları

Uygulamalar, mevcut en son takas zinciri resim dizini (ör. XrDepthAcquireResultANDROID::acquiredIndex) elde etmek için xrAcquireDepthSwapchainImagesANDROID işlevini kullanabilir. Bu işlev, xrEnumerateDepthSwapchainImagesANDROID tarafından numaralandırılan XrDepthSwapchainImageANDROID dizisine dizinleri ekler. Döndürülen XrDepthAcquireResultANDROID, derinlik verilerini yorumlamak için gerekli olan görüş alanı ve duruş gibi diğer bilgileri de içerir. xrAcquireDepthSwapchainImagesANDROID işlevinin bir sonraki çağrısına kadar, görüntü dizisindeki edinilen yerden okumak güvenlidir.

Bir oturumdaki karşılık gelen xrBeginFrame ve xrEndFrame çağrıları arasında en fazla bir xrAcquireDepthSwapchainImagesANDROID çağrısı olmalıdır.

Geçerli Kullanım (Dolayı)

İade Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • 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_DEPTH_NOT_AVAILABLE_ANDROID
  • XR_ERROR_CALL_ORDER_INVALID
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_TIME_INVALID

XrDepthAcquireInfoANDROID yapısı şu şekilde tanımlanır:

typedef struct XrDepthAcquireInfoANDROID {
    XrStructureType    type;
    const void*        next;
    XrSpace            space;
    XrTime             displayTime;
} XrDepthAcquireInfoANDROID;

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.
  • space, XrDepthAcquireResultANDROID::views içinde döndürülen pozun referans çerçevesini tanımlayan bir XrSpace öğesidir.
  • displayTime, XrDepthAcquireResultANDROID::views içinde döndürülen pozun hesaplanmasında kullanılan süreyi belirten bir XrTime bağımsız değişkenidir. Uygulamalar, mevcut çerçeve için tahmini görüntüleme sürelerini geçmelidir.

Geçerli Kullanım (Dolayı)

XrDepthAcquireResultANDROID yapısı şu şekilde tanımlanır:

typedef struct XrDepthAcquireResultANDROID {
    XrStructureType       type;
    const void*           next;
    uint32_t              acquiredIndex;
    XrTime                exposureTimestamp;
    XrDepthViewANDROID    views[2];
} XrDepthAcquireResultANDROID;

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.
  • acquiredIndex, xrEnumerateDepthSwapchainImagesANDROID tarafından numaralandırılan XrDepthSwapchainImageANDROID dizisindeki edinilen dokunun dizinidir.
  • exposureTimestamp, derinlik haritasının çekildiği zamanı belirten XrTime değeridir.
  • views, her göz için bir tane olmak üzere iki XrDepthViewANDROID dizisidir. Dizindeki 0, sol göz, 1 ise sağ gözdür.

Geçerli Kullanım (Dolayı)

XrDepthViewANDROID yapısı şu şekilde tanımlanır:

typedef struct XrDepthViewANDROID {
    XrStructureType    type;
    const void*        next;
    XrFovf             fov;
    XrPosef            pose;
} XrDepthViewANDROID;

Üye Açıklamaları

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.
  • fov, bu görünümü oluşturmak için kullanılan görüş alanını belirten bir XrFovf bağımsız değişkenidir. Görünüm hiçbir zaman yatay veya dikey olarak çevrilmez.
  • pose, derinlik haritasının oluşturulduğu pozu belirten bir XrPosef bağımsız değişkenidir. Referans çerçevesi XrDepthAcquireInfoANDROID içinde belirtilir.

Geçerli Kullanım (Dolayı)

Derinlik izleme için örnek kod

Aşağıdaki örnek kodda, derinlik görüntülerinin nasıl elde edileceği gösterilmektedir.

XrInstance instance;  // previously initialized
XrSystemId systemId;  // previously initialized
XrSession session; // previously initialized
XrSpace stageSpace; // space created for XR_REFERENCE_SPACE_TYPE_STAGE.

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateDepthSwapchainANDROID xrCreateDepthSwapchainANDROID; // previously initialized
PFN_xrDestroyDepthSwapchainANDROID xrDestroyDepthSwapchainANDROID; // previously initialized
PFN_xrEnumerateDepthSwapchainImagesANDROID xrEnumerateDepthSwapchainImagesANDROID; // previously initialized
PFN_xrEnumerateDepthResolutionsANDROID xrEnumerateDepthResolutionsANDROID; // previously initialized
PFN_xrAcquireDepthSwapchainImagesANDROID xrAcquireDepthSwapchainImagesANDROID; // previously initialized

// Inspect system capability
XrSystemProperties properties{XR_TYPE_SYSTEM_PROPERTIES};
XrSystemDepthTrackingPropertiesANDROID depthTrackingProperties{XR_TYPE_SYSTEM_DEPTH_TRACKING_PROPERTIES_ANDROID};
properties.next = &depthTrackingProperties;
CHK_XR(xrGetSystemProperties(instance, systemId, &properties));
if (!depthTrackingProperties.supportsDepthTracking) {
  // depth tracking is not supported.
  return;
}

// Query the supported depth resolution.
XrDepthCameraResolutionANDROID supportedDepthResolution;
uint32_t supportedResolutionCount = 0;
CHK_XR(xrEnumerateDepthResolutionsANDROID(
    session, 1, &supportedResolutionCount, &supportedDepthResolution));

// Define metadata to access the raw and smooth depth along with confidences.
XrDepthSwapchainCreateInfoANDROID swapchainCreateInfo = {
  .type = XR_TYPE_DEPTH_SWAPCHAIN_CREATE_INFO_ANDROID,
  .next = nullptr,
  .createFlags =
    XR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_DEPTH_IMAGE_BIT_ANDROID |
    XR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_CONFIDENCE_IMAGE_BIT_ANDROID |
    XR_DEPTH_SWAPCHAIN_CREATE_RAW_DEPTH_IMAGE_BIT_ANDROID |
    XR_DEPTH_SWAPCHAIN_CREATE_RAW_CONFIDENCE_IMAGE_BIT_ANDROID,

  // Use the resolution supported by the runtime.
  .resolution = supportedDepthResolution,
};

XrDepthSwapchainANDROID depthSwapchain;
CHK_XR(xrCreateDepthSwapchainANDROID(
    session, &swapchainCreateInfo, &depthSwapchain));

// Enumerate depth images.
uint32_t imageCountOutput = 0;
CHK_XR(xrEnumerateDepthSwapchainImagesANDROID(
    depthSwapchain, 0, &imageCountOutput, nullptr));
std::vector<XrDepthSwapchainImageANDROID> depthImages(imageCountOutput);
for (int i = 0; i < imageCountOutput; i++) {
  depthImages[i].type = XR_TYPE_DEPTH_SWAPCHAIN_IMAGE_ANDROID;
}
CHK_XR(xrEnumerateDepthSwapchainImagesANDROID(
  depthSwapchain, imageCountOutput, &imageCountOutput, depthImages.data()));

while (1) {
    // ...
    // For every frame in frame loop
    // ...

    XrFrameState frameState;  // previously returned from xrWaitFrame
    const XrTime time = frameState.predictedDisplayTime;

    XrDepthAcquireInfoANDROID acquireInfo = {
        .type = XR_TYPE_DEPTH_ACQUIRE_INFO_ANDROID,
        .space = stageSpace,
        .time = time};
    XrDepthAcquireResultANDROID acquireResult = {
        .type = XR_TYPE_DEPTH_ACQUIRE_RESULT_ANDROID,
    };
    CHK_XR(xrAcquireDepthImagesANDROID(
        depthSwapchain, &acquireInfo, &acquireResult));

    // Each value in a depth image corresponds to a point in the real world.
    // The sample code in this section shows how to find the stageSpace position
    // of the point corresponding to a particular value in the depth image.

    // For this sample code, assume we are using a right handed coordinate system
    // with +X to the right, +Y up and -Z forward.

    XrDepthSwapchainImageANDROID *image =
        &depthImages[acquireResult.acquireIndex];

    // Assume supported resolution is XR_DEPTH_CAMERA_RESOLUTION_160x160_ANDROID.
    const int imageResolution = 160;
    int imageY = // value in [0, imageResolution)
    int imageX = // value in [0, imageResolution)

    // Get depth value from left eye.
    // A right depth value would be obtained with the following expression:
    // depthR = image->rawDepthImage[imageResolution*imageResolution+i*imageResolution+j]
    float depthL = image->rawDepthImage[imageY*imageResolution + imageX];
    XrDepthViewANDROID viewL = acquireResult.views[0];

    float tanL = tanf(viewL.fov.angleLeft);
    float tanR = tanf(viewL.fov.angleRight);
    float tanU = tanf(viewL.fov.angleUp);
    float tanD = tanf(viewL.fov.angleDown);

    float s = (imageX + 0.5f) / (float)imageResolution;
    float t = (imageY + 0.5f) / (float)imageResolution;

    // Calculate the depth camera space position of the point
    // corresponding to this depth value.
    XrVector3f posInCameraSpace;
    posInCameraSpace.z = -depthL;
    posInCameraSpace.x = (tanL + (tanR - tanL)*s)*depthL;
    posInCameraSpace.y = (tanB + (tanU - tanB)*t)*depthL;

    XrPosef depthCameraPoseL = viewL.pose;
    // Transform posInCameraSpace by depthCameraPoseL

    // ...
    // Finish frame loop
    // ...
}

Yeni nesne türleri

Yeni Enum Sabitleri

XrObjectType dizini aşağıdakilerle genişletildi:

  • XR_OBJECT_TYPE_DEPTH_SWAPCHAIN_ANDROID

XrResult dizini şu şekilde genişletildi:

  • XR_ERROR_DEPTH_NOT_AVAILABLE_ANDROID

XrStructureType dizini aşağıdakilerle genişletildi:

  • XR_TYPE_DEPTH_SWAPCHAIN_CREATE_INFO_ANDROID
  • XR_TYPE_DEPTH_VIEW_ANDROID
  • XR_TYPE_DEPTH_ACQUIRE_INFO_ANDROID
  • XR_TYPE_DEPTH_ACQUIRE_RESULT_ANDROID
  • XR_TYPE_SYSTEM_DEPTH_TRACKING_PROPERTIES_ANDROID
  • XR_TYPE_DEPTH_SWAPCHAIN_IMAGE_ANDROID

Yeni Sıralamalar

Yeni Yapılar

Yeni İşlevler

Sayılar

Sürüm Geçmişi

  • Düzeltme 1, 09.09.2024 (Levana Chen)
    • İlk uzantı açıklaması