XR_EXT_spatial_container

Name String

XR_EXT_spatial_container

Uzantı Türü

Örnek uzantısı

Kayıtlı Dahili Numara

811

Düzeltme

1

Onay Durumu

Onaylanmadı

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

OpenXR 1.0

Son Değiştirilme Tarihi

2026-08-06

IP Durumu

Bilinen bir fikri mülkiyet hak talebi yok.

Katkıda bulunanlar

Jared Finder, Google
Andreas Loeve Selvik, Meta Platforms
Lachlan Ford, Google
Cass Everitt, Meta Platforms
Adam Gousetis, Meta Platforms
Ankur Agrawal, Unity Technologies
Bjorn Swenson, LÖVR
Denny Rönngren, Varjo Technologies
Fredia Huya-Kouadio, Godot Engine
Guodong Rong, Meta Platforms
Jakob Bornecrantz, NVIDIA
Jian Zhang, ByteDance
John Kearney, Meta Platforms
Jonathan Wright, Meta Platforms
Junfeng She, ByteDance
Kenny Vercaemer, Google
Kurtis Eveleigh, Qualcomm
Mauricio Narvaez, Meta Platforms
Nathan Nuber, Valve Corporation
Nihav Jain, Google
Nikita Lutsenko, Meta Platforms
Praveen Babu J D, ByteDance
Rylie Pavlik, Collabora
Salar Khan, Google
Shuai Liu, ByteDance
Walter Luh, Meta Platforms
Yin Li, Microsoft
Zhipeng Liu, ByteDance

Genel Bakış

Bu uzantı, masaüstü 2D pencere sistemlerindeki "pencereler" kavramına benzer şekilde, "uzamsal kapsayıcılar" adı verilen yeni bir görüntülenebilir öğe sınıfı tanımlar.

OpenXR 1.x'te uygulamalar, kullanıcının gördüğü her şeyi ve bunun kullanıcının gerçek veya sanal ortamıyla nasıl harmanlandığını özel olarak kontrol eder. Çalışma zamanları, kullanıcı güvenliğini sağlamak için gösterilen içerikte yalnızca küçük değişiklikler yapar. Bu uygulama modeli, kullanıcıyı tek bir deneyime dahil etmek için idealdir ancak aynı anda birden fazla deneyim sunamaz. Özellikle AR ve karma gerçeklik ortamlarında kullanıcılar genellikle aynı anda birden fazla farklı uygulamayı deneyimlemek ister.

Uzamsal kapsayıcılar, 3D'ye genişletilmiş pencereler gibidir. Kullanıcı, aynı anda birden fazla uzamsal kapsayıcı görebilir ve bunların bir alt kümesine giriş sağlar. Görünür uzamsal kapsayıcılar farklı uygulamalara ait olabilir ve çalışma zamanları, kullanıcı adına boyutlarını ve yerleşimlerini yönetebilir.

Bu uzantı, mevcut etkileyici OpenXR deneyimlerine ek olarak bu yeni mekansal sınırlı deneyim türlerini de destekler. Sınırlı OpenXR deneyimlerinde, hafif 3D içeriklere (küçük derinlik farkları olan düz paneller) veya tamamen 3D içerik barındıran hacimlere izin verilir. Sürükleyici OpenXR deneyimleri, OpenXR 1.0'dan beri desteklenen mevcut tam ekran sürükleyici uygulamalardır. Uygulamalar, isterlerse iki içerik türü arasında geçiş yapabilir.

Bu uzantı, bir uygulamanın içeriğini oluşturmak için herhangi bir yöntem tanımlamaz. İçeriğin nasıl çizileceği diğer uzantılarda tanımlanır: XR_EXT_spatial_container_self_rendering .

Uzamsal kapsayıcıları kullanma

XrSpatialContainerEXT, uzamsal kapsayıcıyı temsil eden bir herkese açık kullanıcı adıdır.

XR_DEFINE_HANDLE(XrSpatialContainerEXT)

Uygulamalar, aşağıdaki adımları uygulayarak uzamsal container aracılığıyla oluşturulmaya başlar:

  1. xrCreateSpatialContainerEXT ile uzamsal kapsayıcı oluşturun.
  2. İlk sunum için kapsayıcıdaki herhangi bir durumu (ör. sınır modu) değiştirin.
  3. Çalışma zamanından, kapsayıcıyı xrRequestSpatialContainerVisibleEXT ile göstermesini isteyin.
  4. Çalışma zamanının kapsayıcıyı göstermeye hazır olmasını bekleyin. Çalışma zamanı hazır olduğunda visible, XR_TRUE olarak ayarlanmış bir XrEventDataSpatialContainerVisibleChangedEXT etkinliğini sıraya alır.
  5. Üç boyutlu kapsayıcı için oluşturma işlemini başlatın.

Uzamsal kapsayıcıyı kaldırma işlemi ise şu şekildedir:

  1. Çalışma zamanından, xrRequestSpatialContainerVisibleEXT ile kapsayıcıyı gizlemesini isteyin.
  2. Çalışma zamanının kapsayıcıyı gizleme işlemini tamamlamasını bekleyin. Çalışma zamanı, kapsayıcıyı tamamen gizlediğinde visible, XR_FALSE olarak ayarlanmış bir XrEventDataSpatialContainerVisibleChangedEXT etkinliğini sıraya alır.
  3. Uzamsal kapsayıcı için oluşturma işlemini sonlandırır.
  4. xrDestroySpatialContainerEXT ile kapsayıcıyı yok edin.

Not

Bu uzantı, görünürlük ve odak yönetimini ayrı ayrı uzamsal kapsayıcılara devredecek şekilde tasarlanmıştır. Oturum bir bütün olarak artık tek bir görünür veya odaklanmış nesneyi temsil etmediğinden standart OpenXR durum makinesinden (READY, SYNCHRONIZED, VISIBLE, FOCUSED) geçmez. Bunun yerine oturum, etkin kullanım ömrü boyunca XR_SESSION_STATE_IDLE modunda kalır ve Oturum durumunda yapılan değişiklikler bölümündeki kurallar, temel OpenXR işlemlerinin bu modla nasıl eşleştiğini belirtir.

Üç boyutlu kapsayıcı oluşturma

xrCreateSpatialContainerEXT işlevi, yeni bir uzamsal kapsayıcı oluşturur.

XrResult xrCreateSpatialContainerEXT(
    XrSession                                   session,
    const XrSpatialContainerCreateInfoEXT*      createInfo,
    XrSpatialContainerEXT*                      spatialContainer);

Parametre Açıklamaları

  • session, uzamsal kapsayıcıyı oluşturan XrSession'dır.
  • createInfo, uzamsal kapsayıcıyı oluşturmak için parametreler içeren bir XrSpatialContainerCreateInfoEXT işaretçisidir.
  • spatialContainer, oluşturulan XrSpatialContainerEXT'nin döndürüldüğü bir herkese açık kullanıcı adının işaretçisidir.

Yeni oluşturulan bir XrSpatialContainerEXT görünür ve etkileşim kurulabilir olmamalı ve XR_SPATIAL_CONTAINER_BOUNDS_MODE_BOUNDED_EXT sınır modunda olmalıdır. Yoğun içerik modunda başlatılacak bir uzamsal kapsayıcı isteyen uygulamalar, uzamsal kapsayıcı gösterme isteğinde bulunmadan önce XR_SPATIAL_CONTAINER_BOUNDS_MODE_IMMERSIVE_EXT sınır modunu talep edebilir.

XrSpatialContainerCreateInfoEXT :: suggestedBounds öğesinin herhangi bir boyutu negatif, sonsuz veya sayı değilse çalışma zamanları XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (zorunlu). Bir uygulama, XrSystemSpatialContainerPropertiesEXT :: maxSpatialContainerCount içinde belirtilenden daha fazla uzamsal kapsayıcı oluşturmaya çalışırsa çalışma zamanları XR_ERROR_LIMIT_REACHED değerini döndürmelidir. Bu oturum için uzamsal kapsayıcılar etkinleştirilmediyse çalışma zamanları XR_ERROR_SPATIAL_CONTAINERS_NOT_ENABLED_EXT değerini döndürmelidir.

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

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

XrSpatialContainerCreateInfoEXT, uzamsal kapsayıcı oluşturmak için xrCreateSpatialContainerEXT'ye iletilir.

typedef struct XrSpatialContainerCreateInfoEXT {
    XrStructureType                              type;
    const void*                                  next;
    XrSpatialContainerGraphicsPresentationEXT    graphicsPresentation;
    XrExtent3Df                                  suggestedBounds;
} XrSpatialContainerCreateInfoEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • graphicsPresentation, bu uzamsal kapsayıcının grafikleri nasıl sunduğunu açıklayan bir XrSpatialContainerGraphicsPresentationEXT'tir.
  • suggestedBounds, uzamsal kapsayıcının istenen boyutlarını metre cinsinden açıklayan bir XrExtent3Df'dir.

Boyut tercihi olmayan bir uygulama, suggestedBounds değerini {0, 0, 0} olarak ayarlayabilir. Çalışma zamanı, istenen suggestedBounds değerini yoksayabilir.

Uzamsal kapsayıcıların yönlendirilmiş kutular dışındaki şekillerle sınırlandırılmasına olanak tanıyan bir çalışma zamanı, diğer şekillerin etrafında sınırlayıcı kutu olarak suggestedBounds'u kullanmalıdır. Yönlendirilmiş kutular, en yaygın sınırlayıcı şekil olarak tasarlanmıştır.

Geçerli Kullanım (Dolaylı)

Bir uzamsal kapsayıcı artık kullanılamadığında çalışma zamanları bir XrEventDataSpatialContainerClosedEXT etkinliğini sıraya almalıdır.

typedef struct XrEventDataSpatialContainerClosedEXT {
    XrStructureType          type;
    const void*              next;
    XrSpatialContainerEXT    spatialContainer;
} XrEventDataSpatialContainerClosedEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • spatialContainer, bu etkinliğin ait olduğu XrSpatialContainerEXT'dir.

XrEventDataSpatialContainerClosedEXT etkinliğinin alınması, çalışma zamanının artık uzamsal kapsayıcı gösteremediğini gösterir. Örneğin, kullanıcı "kapat" düğmesini tıkladığında veya oturum XR_SESSION_STATE_LOSS_PENDING durumuna girdiğinde bu durum gerçekleşir.

XrEventDataSpatialContainerClosedEXT etkinliğini aldıktan sonra uygulama, ilgili uzamsal kapsayıcıyı kullanmayı bırakmalı, oluşturma döngüsü gibi ilişkili durumları kaldırmalı ve kapsayıcıyı silmelidir. Çalışma zamanları, xrDestroySpatialContainerEXT dışındaki tüm işlevlerden XR_ERROR_SPATIAL_CONTAINER_CLOSED_EXT döndürmelidir.

Çalışma zamanı bir kapatma etkinliğini sıraya aldığında uzamsal kapsayıcı görünür durumdaysa çalışma zamanları önce kapsayıcıyı görünür olmayacak şekilde değiştirmeli ve bir XrEventDataSpatialContainerVisibleChangedEXT etkinliğini sıraya almalıdır.

Geçerli Kullanım (Dolaylı)

xrDestroySpatialContainerEXT işlevi, mevcut bir uzamsal kapsayıcıyı yok eder.

XrResult xrDestroySpatialContainerEXT(
    XrSpatialContainerEXT                       spatialContainer);

Parametre Açıklamaları

Üç boyutlu kapsayıcı yok edildikten sonra çalışma zamanları, kapsayıcının içeriğini artık göstermemeli ve kapsayıcıyla ilgili başka etkinlikleri sıraya almamalıdır.

Uygulamalar, görünür durumdaki uzamsal kapsayıcıları yok etmemelidir. Aksi takdirde grafik kusurları oluşabilir. Bunun yerine uygulamalar, xrRequestSpatialContainerVisibleEXT ile uzamsal kapsayıcıyı gizleme isteğinde bulunmalı, XrEventDataSpatialContainerVisibleChangedEXT etkinliğini beklemeli ve ardından kapsayıcıyı yok etmelidir.

Geçerli Kullanım (Dolaylı)

İleti Dizisi Güvenliği

  • spatialContainer ve tüm alt herkese açık kullanıcı adlarına erişim harici olarak senkronize edilmelidir.

Dönüş Kodları

Başarılı

  • XR_SUCCESS

Hata

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

Uzamsal kapsayıcı alanı

xrCreateSpatialContainerSpaceEXT işlevi, belirli bir uzamsal kapsayıcının uzamsal kapsayıcı alanı için bir XrSpace herkese açık kullanıcı adı oluşturur.

XrResult xrCreateSpatialContainerSpaceEXT(
    XrSession                                   session,
    const XrSpatialContainerSpaceCreateInfoEXT* createInfo,
    XrSpace*                                    space);

Parametre Açıklamaları

  • session, alanı oluşturan XrSession'dır.
  • createInfo, alanı oluşturmak için parametreler içeren bir XrSpatialContainerSpaceCreateInfoEXT işaretçisidir.
  • space, oluşturulan XrSpace'in döndürüldüğü bir herkese açık kullanıcı adına işaretçidir.

Belirli bir uzamsal kapsayıcının "uzamsal kapsayıcı alanı", orijini bu uzamsal kapsayıcının sınırlarının merkezinde olan bir koordinat sistemidir. Bu alan genellikle xrLocateSpace gibi işlevler için temel alan olarak kullanılır.

+X, kapsayıcının sağ yüzünü, +Y, kapsayıcının üst yüzünü ve +Z, kapsayıcının ön yüzünü gösterir. Örneğin, bir kapsayıcı yer çekimine göre hizalanmışsa ve izleyicinin önündeyse ve izleyici LOCAL alanına göre kimlik pozundaysa çalışma zamanları, kapsayıcı alanını LOCAL alanına göre kimlik yönüyle yönlendirmelidir . Çalışma zamanları, bir kapsayıcı alanı görünür hale geldiğinde kapsayıcı alanının pozunu LOCAL alanına göre herhangi bir poza ayarlayabilir.

ext spatial container space convention

18. şekil. Üç boyutlu kapsayıcı alanının eksen kuralı

Üç boyutlu kapsayıcı alanı, dünya kilitli olmayan bir başlangıç noktasıdır. Yoğun içerik modundayken dünya kilitli kaynak isteyen uygulamalar, XR_REFERENCE_SPACE_TYPE_LOCAL gibi dünya kilitli alan kullanabilir.

Çalışma zamanları, genellikle kullanıcının uzamsal kapsayıcıyı farklı bir konuma veya rotasyona taşımasını desteklemek için uzamsal kapsayıcı alanının pozunu dilediği zaman değiştirebilir. Çalışma zamanları, XR_SPATIAL_CONTAINER_BOUNDS_MODE_BOUNDED_EXT ve XR_SPATIAL_CONTAINER_BOUNDS_MODE_IMMERSIVE_EXT sınır modları arasında geçiş yaparken de pozu değiştirebilir.

Uzamsal kapsayıcı alanı, ait olduğu uzamsal kapsayıcı xrDestroySpatialContainerEXT ile yok edilse bile geçerli bir tutma yeri olmaya devam etmelidir. Bir uzamsal kapsayıcı görünür değilken veya yok edilmişken uzamsal kapsayıcı alanı, diğer alanlara göre bulunamaz olmalıdır. XrSpaceLocation :: locationFlags ve XrViewState ::viewStateFlags 0 olur.

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

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

XrSpatialContainerSpaceCreateInfoEXT, XrSpace herkese açık kullanıcı adı oluşturmak için xrCreateSpatialContainerSpaceEXT ile birlikte kullanılır.

typedef struct XrSpatialContainerSpaceCreateInfoEXT {
    XrStructureType          type;
    const void*              next;
    XrSpatialContainerEXT    spatialContainer;
} XrSpatialContainerSpaceCreateInfoEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • spatialContainer, alan oluşturulacak bir XrSpatialContainerEXT'dir.

Geçerli Kullanım (Dolaylı)

Uzamsal kapsayıcı sunma

Üç boyutlu kapsayıcı içeriklerinin görüntülenmek üzere OpenXR'a gönderilmesi diğer uzantılar tarafından gerçekleştirilir: XR_EXT_spatial_container_self_rendering .

Bu uzantı, diğer uzantıların uzamsal kapsayıcı için grafik sunum yöntemini belirtmesine olanak tanımak amacıyla XrSpatialContainerGraphicsPresentationEXT enum'unu tanımlar.

typedef enum XrSpatialContainerGraphicsPresentationEXT {
    XR_SPATIAL_CONTAINER_GRAPHICS_PRESENTATION_SELF_RENDERING_EXT = 1000813000,
    XR_SPATIAL_CONTAINER_GRAPHICS_PRESENTATION_CONFORMANCE_AUTOMATION_EXT = 1000814000,
    XR_SPATIAL_CONTAINER_GRAPHICS_PRESENTATION_SYSTEM_RENDERING_EXTX1 = 1000815000,
    XR_SPATIAL_CONTAINER_GRAPHICS_PRESENTATION_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialContainerGraphicsPresentationEXT;

Enum Açıklaması

XR_SPATIAL_CONTAINER_GRAPHICS_PRESENTATION_SELF_RENDERING_EXT

Üç boyutlu kapsayıcı, OpenXR oluşturma katmanlarını kullanır (XR_EXT_spatial_container_self_rendering uzantısı tarafından eklenir)

XR_SPATIAL_CONTAINER_GRAPHICS_PRESENTATION_CONFORMANCE_AUTOMATION_EXT

Uzamsal kapsayıcı, uygunluk testi için oluşturulur ve oluşturma yolu yoktur (XR_EXT_spatial_container_conformance_automation uzantısı tarafından eklenir).

XR_SPATIAL_CONTAINER_GRAPHICS_PRESENTATION_SYSTEM_RENDERING_EXTX1

Üç boyutlu kapsayıcı, OpenXR sistem oluşturmayı kullanır (XR_EXTX1_system_renderer uzantısı tarafından eklendi)

Uzamsal kapsayıcı durumu

Üç boyutlu kapsayıcı durumu, hem uygulama isteklerine hem de kullanıcının ihtiyaçlarına göre çalışma zamanları tarafından yönetilir. Bu nedenle, uzamsal kapsayıcı durumunun her yönü aşağıdakileri belgeler:

  • Çalışma zamanlarının, uzamsal kapsayıcı durumunu değiştirmesine izin verildiğinde. Çoğu uzamsal kapsayıcı durumu için çalışma zamanları, durumu istediği zaman değiştirebilir.
  • Uygulamaların durum değişikliği isteme şekli. Çalışma zamanları, uygun olduğunu düşünene kadar herhangi bir isteği erteleyebilir. Çalışma zamanları, bir istek ertelendiğinde etkinlikleri sıraya koymaz. Bu nedenle uygulamalar, alakasız mantık için böyle bir etkinliği beklememelidir.
  • Mekansal kapsayıcı durumu değiştiğinde hangi etkinlik çalışma zamanlarının sıraya alınacağı. Çalışma zamanları, uygulama tarafından istenen değişiklikler ve çalışma zamanı tarafından başlatılan değişiklikler de dahil olmak üzere tüm değişiklikler için etkinlikleri sıraya alır. Çalışma zamanları, değişiklik göstermeyen durum değişikliği etkinliklerini sıraya almamalıdır. Örneğin, bir uygulama bir kapsayıcıyı gizlemek için hızlı bir şekilde iki istekte bulunursa bu etkinlikler sıraya alınmamalıdır.
  • Uygulama değişikliği isteği reddedildiğinde etkinlik çalışma zamanlarının sıraya aldığı öğeler. Çalışma zamanları, genellikle yüksek kaliteli bir kullanıcı deneyimi sağlamayla ilgili sistem politikası nedeniyle herhangi bir isteği reddedebilir.

xrGetSpatialContainerStateEXT işlevi, uzamsal kapsayıcının mevcut durumunu sorgular.

XrResult xrGetSpatialContainerStateEXT(
    XrSpatialContainerEXT                       spatialContainer,
    const XrSpatialContainerStateGetInfoEXT*    getInfo,
    XrSpatialContainerStateEXT*                 state);

Parametre Açıklamaları

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_CONTAINER_CLOSED_EXT
  • XR_ERROR_VALIDATION_FAILURE

XrSpatialContainerStateGetInfoEXT, XrSpatialContainerStateEXT sorgulamak için xrGetSpatialContainerStateEXT ile birlikte kullanılır.

typedef struct XrSpatialContainerStateGetInfoEXT {
    XrStructureType    type;
    const void*        next;
} XrSpatialContainerStateGetInfoEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.

Geçerli Kullanım (Dolaylı)

typedef struct XrSpatialContainerStateEXT {
    XrStructureType                    type;
    void*                              next;
    XrBool32                           visible;
    XrBool32                           interactable;
    XrSpatialContainerBoundsModeEXT    boundsMode;
} XrSpatialContainerStateEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • visible, uzamsal kapsayıcının görünür olup olmadığını gösterir.
  • interactable, bir uzamsal kapsayıcının şu anda herhangi bir giriş türünü alıp alamayacağını gösterir. Masaüstü 2D pencere sistemlerindeki "odak" özelliğine benzer. Aralarındaki fark, birden fazla uzamsal kapsayıcının aynı anda etkileşime geçirilebilir olabilmesidir.
  • boundsMode, uzamsal kapsayıcının geçerli XrSpatialContainerBoundsModeEXT değeridir.

Uzamsal kapsayıcının durumunda yapılan değişiklikler etkinlikler aracılığıyla iletilir.

Alan Değiştirildi etkinliği

visible

XrEventDataSpatialContainerVisibleChangedEXT

interactable

XrEventDataSpatialContainerInteractableChangedEXT

boundsMode

XrEventDataSpatialContainerBoundsChangedEXT

Geçerli Kullanım (Dolaylı)

Görünürlük

Uygulamalar, xrRequestSpatialContainerVisibleEXT ile üç boyutlu kapsayıcıyı göstermeyi veya gizlemeyi ister.

XrResult xrRequestSpatialContainerVisibleEXT(
    XrSpatialContainerEXT                       spatialContainer,
    const XrSpatialContainerVisibleRequestInfoEXT* info);

Parametre Açıklamaları

Üç boyutlu kapsayıcıyı gösterme veya gizleme işlemi eşzamansızdır.

Uygulamalar, çalışma zamanlarının sorunsuz bir geçiş göstermesini sağlamak için bir uzamsal kapsayıcıyı yok etmeden önce gizlemeyi istemelidir. Çalışma zamanları, uzamsal kapsayıcıyı gizleme isteklerini yerine getirmelidir.

Çalışma zamanı, uzamsal kapsayıcı gösterme isteklerini reddedebilir. Bu durumda çalışma zamanı, XrEventDataSpatialContainerVisibleRequestDeniedEXT etkinliğini sıraya almalıdır. Örneğin, bazı çalışma zamanları, kullanıcının sistem tarafından sağlanan bir "küçültme" düğmesiyle etkileşime girerek gizlediği bir uzamsal kapsayıcıyı gösterme isteğini reddeder.

Çalışma zamanları, uygulama en az bir kez gösterme isteğinde bulunmadan önce uzamsal kapsayıcı göstermemelidir. Uygulamanın uzamsal kapsayıcı göstermeye yönelik ilk isteğinden sonra çalışma zamanları, uygulamanın isteklerinden bağımsız olarak uzamsal kapsayıcının görünürlüğünü değiştirebilir. Bu sayede uygulama, uzamsal kapsayıcının ilk durumunu ve içeriğini kontrol edebilir. Çalışma zamanları da kullanıcının hangi uzamsal kapsayıcıların görünür olacağını seçmesine olanak tanıyan görev çubuğu gibi sistem kullanıcı arayüzü sağlayabilir.

Çalışma zamanları, XrSystemSpatialContainerPropertiesEXT :: supportsBounded ve XrSystemSpatialContainerPropertiesEXT :: supportsImmersive uyarınca desteklenmeyen bir sınır modunda üç boyutlu kapsayıcı gösterme isteklerini reddetmelidir (must). Bu durum, varsayılan sınır modu XR_SPATIAL_CONTAINER_BOUNDS_MODE_BOUNDED_EXT belirli bir sistem için desteklenmediğinde ortaya çıkabilir.

Not

Bazı uygulamalarda, uzamsal kapsayıcıyı göstermek veya gizlemek için sistem hizmetleriyle iletişim kurulması gerekir ve bu işlem, kullanıcı bir sistem iletişim kutusuyla etkileşime geçene kadar ertelenebilir. Görünürlük durumu değişikliklerini istemek için asenkron tasarım, çalışma zamanlarına bu işlemlerin her ikisini de tamamlaması için zaman tanımayı amaçlar.

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_CONTAINER_CLOSED_EXT
  • XR_ERROR_VALIDATION_FAILURE

XrSpatialContainerVisibleRequestInfoEXT, üç boyutlu kapsayıcının görünürlüğünü değiştirmek için xrRequestSpatialContainerVisibleEXT ile birlikte kullanılır.

typedef struct XrSpatialContainerVisibleRequestInfoEXT {
    XrStructureType    type;
    const void*        next;
    XrBool32           visible;
} XrSpatialContainerVisibleRequestInfoEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • visible, bir uzamsal kapsayıcının gösterilmesinin mi yoksa gizlenmesinin mi istendiğini gösterir.

Geçerli Kullanım (Dolaylı)

Çalışma zamanı, uzamsal kapsayıcının görünürlüğünü her değiştirdiğinde yeni durumla birlikte bir XrEventDataSpatialContainerVisibleChangedEXT etkinliğini sıraya almalıdır.

typedef struct XrEventDataSpatialContainerVisibleChangedEXT {
    XrStructureType          type;
    const void*              next;
    XrSpatialContainerEXT    spatialContainer;
    XrBool32                 visible;
} XrEventDataSpatialContainerVisibleChangedEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • spatialContainer, bu etkinliğin ait olduğu XrSpatialContainerEXT'dir.
  • visible, uzamsal kapsayıcının yeni görünür durumudur.

Bu etkinlik, XR_SESSION_STATE_VISIBLE etkinliğinin yerini alır ve değerin her kapsayıcı için farklı olmasını sağlar. Uygulama tarafından istenen değişiklikler ve çalışma zamanında başlatılan değişiklikler de dahil olmak üzere tüm değişiklikler için etkinlik sıraya alınmalıdır.

Çalışma zamanı, boş bir kapsayıcı görüntülememek ve uygulamaya ilk içeriğini göndermesi için zaman tanımak amacıyla visible, XR_TRUE olarak ayarlanmış şekilde bu etkinliği sıraya aldıktan sonra bir kapsayıcının oluşturulmasını birkaç kare geciktirebilir. Bu süre boyunca XrSpatialContainerStateEXT ::visible, XR_TRUE olur. Çalışma zamanları, bir kapsayıcının oluşturulmasını 0,5 saniyeden fazla geciktirmemelidir.

Geçerli Kullanım (Dolaylı)

Çalışma zamanı, bir kapsayıcıyı gösterme isteğini her reddettiğinde bir XrEventDataSpatialContainerVisibleRequestDeniedEXT etkinliğini sıraya almalıdır.

typedef struct XrEventDataSpatialContainerVisibleRequestDeniedEXT {
    XrStructureType          type;
    const void*              next;
    XrSpatialContainerEXT    spatialContainer;
} XrEventDataSpatialContainerVisibleRequestDeniedEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • spatialContainer, bu etkinliğin ait olduğu XrSpatialContainerEXT'dir.

Geçerli Kullanım (Dolaylı)

Etkileşimli

Uygulamalar, uzamsal kapsayıcıların etkileşimli olmasını isteyemez. Hangi uzamsal kapsayıcılarla etkileşim kurulabileceği tamamen çalışma zamanları tarafından kontrol edilir. Etkileşim kurulabilen bir uzamsal kapsayıcı da görünür olmalıdır.

Çalışma zamanı, bir uzamsal kapsayıcının etkileşimli durumunu her değiştirdiğinde yeni durumla birlikte bir XrEventDataSpatialContainerInteractableChangedEXT etkinliğini sıraya almalıdır.

typedef struct XrEventDataSpatialContainerInteractableChangedEXT {
    XrStructureType          type;
    const void*              next;
    XrSpatialContainerEXT    spatialContainer;
    XrBool32                 interactable;
} XrEventDataSpatialContainerInteractableChangedEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • spatialContainer, bu etkinliğin ait olduğu XrSpatialContainerEXT'dir.
  • interactable, üç boyutlu kapsayıcının yeni etkileşimli durumudur.

Bu etkinlik, XR_SESSION_STATE_FOCUSED etkinliğinin yerini alır ve değerin her kapsayıcı için farklı olmasını sağlar. Etkinlik, çalışma zamanında başlatılan değişiklikler de dahil olmak üzere tüm değişiklikler için sıraya alınır.

Çalışma zamanları, herhangi bir zamanda uzamsal kapsayıcıyla etkileşimi etkinleştirebilir veya devre dışı bırakabilir. Bir çalışma zamanı, aynı anda en fazla bir uzamsal kapsayıcının etkileşimli olmasını destekliyorsa çalışma zamanı, etkileşimli uzamsal kapsayıcıyı değiştirdiğinde, etkileşimli olmaya başlayan kapsayıcı ( interactable, doğru olarak ayarlanır) için etkinlikten önce etkileşimli olmayı bırakan uzamsal kapsayıcı ( interactable, yanlış olarak ayarlanır) için etkinliği sıraya koymalıdır.

Geçerli Kullanım (Dolaylı)

Sınırlar

Uzamsal kapsayıcıda bir sınır modu ve sınırlayıcı kutu bulunur. Üç boyutlu kapsayıcının sınır modu, sınırların nasıl davranacağını açıklar. Sınırlayıcı kutusu, uzamsal kapsayıcının içine çizim yaptığı alandır.

XrSpatialContainerBoundsModeEXT numaralandırması, uzamsal kapsayıcı sınırlarının bulunabileceği farklı modları tanımlar.

typedef enum XrSpatialContainerBoundsModeEXT {
    XR_SPATIAL_CONTAINER_BOUNDS_MODE_BOUNDED_EXT = 1,
    XR_SPATIAL_CONTAINER_BOUNDS_MODE_IMMERSIVE_EXT = 2,
    XR_SPATIAL_CONTAINER_BOUNDS_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialContainerBoundsModeEXT;

Enum Açıklaması

XR_SPATIAL_CONTAINER_BOUNDS_MODE_BOUNDED_EXT

Üç boyutlu kapsayıcı sınırlıdır. Sınırlar, sonlu bir kutudur. Üç boyutlu kapsayıcı yalnızca bu bölgede görünür.

XR_SPATIAL_CONTAINER_BOUNDS_MODE_IMMERSIVE_EXT

Üç boyutlu kapsayıcı, kullanıcıyı içine çeker ve sınırsızdır. Üç boyutlu kapsayıcı, ekranın tamamında gösterilir.

Sınır modunda XR_SPATIAL_CONTAINER_BOUNDS_MODE_IMMERSIVE_EXT olan uzamsal kapsayıcılar için ek koşullar geçerlidir:

  • Çalışma zamanları, bu uzamsal kapsayıcıları, uzamsal kapsayıcı kullanılmadan oluşturulan tam ekran ve kapsamlı bir uygulamayla aynı şekilde ele almalıdır. Oturum durumundaki değişiklikler bölümünde belirtilen davranış değişiklikleri bu kuralın dışındadır.
  • Çalışma zamanları, çevreleyici uzamsal kapsayıcıların bu uzantı olmadan oluşturulan tam ekran ve çevreleyici uygulamalardan farklı davranmasını sağlayan ek uzantılar sağlayabilir.
  • Çalışma zamanları, bu uzamsal kapsayıcılar için sonsuz sınırlar bildirmelidir.
  • Çalışma zamanları, sürükleyici bir uzamsal kapsayıcı görünür durumdayken diğer uzamsal kapsayıcıları gizleyebilir. Bu durum çalışma zamanına göre farklılık gösterebileceğinden uygulamalar, üç boyutlu kapsayıcıların otomatik olarak gösterilmesi veya gizlenmesi için üç boyutlu kapsayıcı görünürlüğüne güvenmemelidir. Görünür durumdaki diğer tüm geçişlerde olduğu gibi, çalışma zamanları, sürükleyici bir kapsayıcının görünür olması nedeniyle uzamsal bir kapsayıcı gizlendiğinde bir XrEventDataSpatialContainerVisibleChangedEXT etkinliğini sıraya almalıdır.

Not

Yukarıdaki şartlar, tüm çalışma zamanlarının bu uzantı olmadan OpenXR 1.x yolunu uygulayabileceğini gösterir. Bunun için dolaylı olarak bir uzamsal kapsayıcı oluşturulur, kapsayıcının sınır modu tam ekran olarak ayarlanır ve görünür olması istenir.

Uygulamalar, xrRequestSpatialContainerBoundsModeEXT ile uzamsal kapsayıcının sınır modunu değiştirmeyi ister.

XrResult xrRequestSpatialContainerBoundsModeEXT(
    XrSpatialContainerEXT                       spatialContainer,
    const XrSpatialContainerBoundsModeRequestInfoEXT* info);

Parametre Açıklamaları

Uzamsal kapsayıcının sınır modunu değiştirmek eşzamansız bir işlemdir ve çalışma zamanları, uygulama değişiklik isteğinde bulunduktan saniyeler sonra değiştirilmiş veya reddedilmiş bir etkinliği sıraya alabilir. Bu sayede çalışma zamanları, kullanıcının yoğun içerik moduna güvenli bir şekilde girmesi için gereken kullanıcı arayüzünü gösterebilir.

Çalışma zamanları, görünür olmayan bir uzamsal kapsayıcının sınır modunu değiştirme isteğini yerine getirmelidir. Çalışma zamanı, görünür olmayan bir kapsayıcı için sınır modu isteğini reddederse bunun yerine bu tür bir uzamsal kapsayıcıyı gösterme isteğini reddedebilir veya erteleyebilir. Bu, uygulamaların bir kapsayıcıyı tam ekran kapsayıcı olarak başlatmasına olanak tanır. Çalışma zamanı, görünür bir uzamsal kapsayıcının sınır modunu değiştirme isteklerini reddedebilir. Bu durumda çalışma zamanı, bir XrEventDataSpatialContainerBoundsModeRequestDeniedEXT etkinliğini sıraya almalıdır. Örneğin, bazı çalışma zamanları, kullanıcının etkin bir şekilde etkileşimde bulunmadığı görünür bir uzamsal kapsayıcının sınır modunu değiştirme isteğini reddeder.

Çalışma zamanları, bir uygulama XrSystemSpatialContainerPropertiesEXT :: supportsBounded ve XrSystemSpatialContainerPropertiesEXT :: supportsImmersive temelinde desteklenmeyen bir sınır modu isterse XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (zorunlu).

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_CONTAINER_CLOSED_EXT
  • XR_ERROR_VALIDATION_FAILURE

XrSpatialContainerBoundsModeRequestInfoEXT, bir uzamsal kapsayıcının sınır modunu değiştirmek için xrRequestSpatialContainerBoundsModeEXT ile birlikte kullanılır.

typedef struct XrSpatialContainerBoundsModeRequestInfoEXT {
    XrStructureType                    type;
    const void*                        next;
    XrSpatialContainerBoundsModeEXT    boundsMode;
} XrSpatialContainerBoundsModeRequestInfoEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • boundsMode, üç boyutlu kapsayıcı için istenen XrSpatialContainerBoundsModeEXT değeridir.

Geçerli Kullanım (Dolaylı)

Çalışma zamanı, bir uzamsal kapsayıcının sınırlarını veya sınır modunu her değiştirdiğinde yeni sınır bilgileriyle birlikte bir XrEventDataSpatialContainerBoundsChangedEXT etkinliğini sıraya almalıdır.

typedef struct XrEventDataSpatialContainerBoundsChangedEXT {
    XrStructureType                    type;
    const void*                        next;
    XrSpatialContainerEXT              spatialContainer;
    XrExtent3Df                        bounds;
    XrBool32                           infiniteBounds;
    XrSpatialContainerBoundsModeEXT    boundsMode;
} XrEventDataSpatialContainerBoundsChangedEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • spatialContainer, bu etkinliğin ait olduğu XrSpatialContainerEXT'dir.
  • bounds, uzamsal kapsayıcı sınırlarının yeni genişliği, yüksekliği ve derinliğidir.
  • Kapsayıcının sınırları sonsuzsa infiniteBounds doğru olur.
  • boundsMode, uzamsal kapsayıcının yeni XrSpatialContainerBoundsModeEXT değeridir.

Etkinlik, uygulama tarafından istenen değişiklikler ve çalışma zamanında başlatılan değişiklikler de dahil olmak üzere tüm değişiklikler için sıraya alınır.

Kullanıcı, uzamsal kapsayıcıyı etkileşimli olarak yeniden boyutlandırırken çalışma zamanları aşağıdaki şekillerden birinde davranmalıdır:

  • Kullanıcı, uzamsal kapsayıcıyı yeniden boyutlandırırken birçok etkinliği (büyük olasılıkla kare hızında) sıraya koyma
  • Yeniden boyutlandırma işleminin sonunda tek bir etkinliği sıraya koyma

Bir çalışma zamanı, yeniden boyutlandırmanın sonunda yalnızca tek bir etkinliği sıraya alırsa bu çalışma zamanı, yeniden boyutlandırma etkinliğini sıraya alana kadar xrGetSpatialContainerBoundsEXT'ten eski sınırları bildirmeye devam etmelidir. Çalışma zamanları, sorgulanmamış birden fazla sınır değişikliği etkinliğini birleştirmelidir. Başka bir deyişle, sınırlar veya sınır modu değiştiğinde hâlâ sıraya alınmış bir XrEventDataSpatialContainerBoundsChangedEXT etkinliği varsa çalışma zamanları yalnızca gerçekleşen son sınır değişikliğini içeren tek bir etkinlik bildirmelidir. Uygulamalar, xrGetSpatialContainerBoundsEXT ile doğrudan bir uzamsal kapsayıcının sınırlarını da sorgulayabildiğinden, etkinliklerden kaynaklanan sınır değişikliklerinin sayısı, çalışma zamanında oluşturulan sınır değişikliklerinin zamanlamasına, uygulamanın xrPollEvent çağrılarına ve uygulamanın xrGetSpatialContainerBoundsEXT çağrılarına bağlı olarak sorgulamadan kaynaklanan değişikliklerin sayısından farklı olabilir.

Uzamsal kapsayıcının sınırları değiştiğinde uzamsal kapsayıcının yerel orijini de değişebilir. Örneğin, bir çalışma zamanı, kullanıcının kapsayıcının kenarlarından birini sürükleyerek uzamsal kapsayıcının sınırlarını yeniden boyutlandırmasına izin veriyorsa kullanıcı tek bir kenarı sürüklediğinde söz konusu kapsayıcının sınırları ve yerel orijini değişir. Bu gibi durumlarda çalışma zamanı, sınırları ve yerel orijini aynı anda değiştirmelidir.

Çalışma zamanları, infiniteBounds değerini XR_TRUE olarak ayarlamalı ve sonsuz sınırları temsil etmek için genişlik, yükseklik ve derinliği 0,0 olarak ayarlamalıdır. Çalışma zamanları, infiniteBounds değerini XR_FALSE olarak ayarlamalı ve genişlik, yükseklik ve derinliği sonlu sınırlar için sonlu pozitif sayılar olarak ayarlamalıdır.

Çalışma zamanları, XrSpatialContainerBoundsEXT ile aynı kurallara uyarak bounds ve infiniteBounds değerlerini ayarlamalıdır.

Geçerli Kullanım (Dolaylı)

Çalışma zamanı, bir kapsayıcının sınır modunu değiştirme isteğini her reddettiğinde bir XrEventDataSpatialContainerBoundsModeRequestDeniedEXT etkinliğini sıraya koymalıdır.

typedef struct XrEventDataSpatialContainerBoundsModeRequestDeniedEXT {
    XrStructureType          type;
    const void*              next;
    XrSpatialContainerEXT    spatialContainer;
} XrEventDataSpatialContainerBoundsModeRequestDeniedEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • spatialContainer, bu etkinliğin ait olduğu XrSpatialContainerEXT'dir.

Geçerli Kullanım (Dolaylı)

XrSpatialContainerBoundsEXT yapısı, uzamsal kapsayıcının sınırlayıcı kutusunu tanımlar.

typedef struct XrSpatialContainerBoundsEXT {
    XrStructureType    type;
    void*              next;
    XrExtent3Df        bounds;
    XrBool32           infiniteBounds;
} XrSpatialContainerBoundsEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • bounds, uzamsal kapsayıcı sınırlarının genişliği, yüksekliği ve derinliğidir. Sınırlar metre cinsindendir.
  • Kapsayıcının sınırları sonsuzsa infiniteBounds doğru olur.

Çalışma zamanları, infiniteBounds değerini XR_TRUE olarak ayarlamalı ve sonsuz sınırları temsil etmek için genişlik, yükseklik ve derinliği 0,0 olarak ayarlamalıdır. Çalışma zamanları, infiniteBounds değerini XR_FALSE olarak ayarlamalı ve genişlik, yükseklik ve derinliği sonlu sınırlar için sonlu pozitif sayılar olarak ayarlamalıdır.

Geçerli Kullanım (Dolaylı)

xrGetSpatialContainerBoundsEXT işlevi, uzamsal kapsayıcının mevcut sınırlarını sorgular.

XrResult xrGetSpatialContainerBoundsEXT(
    XrSpatialContainerEXT                       spatialContainer,
    const XrSpatialContainerBoundsGetInfoEXT*   getInfo,
    XrSpatialContainerBoundsEXT*                bounds);

Parametre Açıklamaları

Sınırlı bir uzamsal kapsayıcının sınırları sonsuz olmamalıdır, sürükleyici bir uzamsal kapsayıcının sınırları ise sonsuz olmalıdır.

Çalışma zamanları, uzamsal kapsayıcı sınırlıyken herhangi bir zamanda uzamsal kapsayıcının sınırlarını herhangi bir pozitif sonlu değere değiştirebilir. Üç boyutlu kapsayıcının sınırlarında yapılan değişiklikler XrEventDataSpatialContainerBoundsChangedEXT aracılığıyla bildirilir.

Bu uzantıyla, bir uygulama xrRequestSpatialContainerBoundsModeEXT ile sınırlı ve tam ekran arasında geçiş yapmak dışında sınırlarda değişiklik isteğinde bulunamaz. Diğer uzantılar gelecekte bu tür bir yöntem sunabilir.

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Hata

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_CONTAINER_CLOSED_EXT
  • XR_ERROR_VALIDATION_FAILURE

XrSpatialContainerBoundsGetInfoEXT yapısı, gelecekteki uzantı amaçları için mevcut olan bir giriş yapısıdır.

typedef struct XrSpatialContainerBoundsGetInfoEXT {
    XrStructureType    type;
    const void*        next;
} XrSpatialContainerBoundsGetInfoEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.

Geçerli Kullanım (Dolaylı)

XrSpatialContainerVolumeClippingEXT numaralandırması, uzamsal kapsayıcı için farklı hacim kırpma davranışlarını tanımlar.

typedef enum XrSpatialContainerVolumeClippingEXT {
    XR_SPATIAL_CONTAINER_VOLUME_CLIPPING_NONE_EXT = 0,
    XR_SPATIAL_CONTAINER_VOLUME_CLIPPING_STRICT_EXT = 1,
    XR_SPATIAL_CONTAINER_VOLUME_CLIPPING_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialContainerVolumeClippingEXT;

Enum Açıklaması

XR_SPATIAL_CONTAINER_VOLUME_CLIPPING_NONE_EXT

Hiçbir içerik, uzamsal kapsayıcının sınırlayıcı hacmine göre kırpılmaz. İçerik, uzamsal kapsayıcının sınırlarının dışına taşabilir.

XR_SPATIAL_CONTAINER_VOLUME_CLIPPING_STRICT_EXT

İçerik, uzamsal kapsayıcının sınırlayıcı hacmine göre tam olarak kırpılır.

Bu uzantıda bu numaralandırma kullanılmaz. Diğer uzantıların istenen ses kırpma davranışını belirtmesine izin verecek şekilde tanımlanır. Örneğin, bir uygulama, sınırlı bir uzamsal kapsayıcı için arka plan çizmek isteyebilir. Monoküler küp harita, arka plan belirtmek için kullanışlı bir yöntemdir ancak monoküler küp harita, kavramsal olarak kapsayıcının dışındaki sonsuzlukta konumlandırılır.

Sistem özellikleri

Uygulamalar, xrGetSystemProperties işlevini çağırırken XrSystemProperties'e bir XrSystemSpatialContainerPropertiesEXT yapısı zincirleyerek sistem özelliklerini inceleyebilir.

typedef struct XrSystemSpatialContainerPropertiesEXT {
    XrStructureType    type;
    void*              next;
    uint32_t           maxSpatialContainerCount;
    XrBool32           supportsBounded;
    XrBool32           supportsImmersive;
} XrSystemSpatialContainerPropertiesEXT;

Üye Açıklaması

  • type, bu yapının XrStructureType değeridir.
  • next, NULL veya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.
  • Oluşturulabilecek maksimum uzamsal kapsayıcı sayısı maxSpatialContainerCount.
  • Uzamsal kapsayıcılar sınırlandırılabiliyorsa supportsBounded doğru değerini döndürür.
  • Üç boyutlu kapsayıcıların çevreleyici olmasına izin veriliyorsa supportsImmersive değeri doğrudur.

Bu uzantıyı destekleyen çalışma zamanları, yalnızca bellek ayırmayla sınırlı olmak üzere birçok uzamsal kapsayıcı oluşturan bir uygulamayı desteklemelidir (should). Bir çalışma zamanında, aynı anda görüntülenen uzamsal kapsayıcıların sayısı için farklı bir sınır olabilir. Çalışma zamanı, tüm çalışan uygulamalardaki duruma göre her bir uygulamayı sınırlayabileceği için bu uzantıda aynı anda görüntülenen kapsayıcıların sayısını sorgulamanın bir yolu yoktur. Çok kısıtlı cihazlar ile daha az kısıtlı cihazların, aynı anda gösterilen kapsayıcı sayısı için farklı sınırlara sahip olacağı varsayılır. Çok kısıtlı cihazlar aynı anda yalnızca bir uzamsal kapsayıcının gösterilmesini destekleyebilir. Daha az kısıtlı cihazlar ise oluşturma işlem sınırlarına tabi olarak aynı anda çok sayıda uzamsal kapsayıcının gösterilmesini destekleyebilir.

Bu uzantıyı destekleyen çalışma zamanları, sınırlı uzamsal kapsayıcılardan veya sürükleyici uzamsal kapsayıcılardan en az birini desteklemelidir.

Geçerli Kullanım (Dolaylı)

xrEnumerateSupportedSpatialContainerGraphicsPresentationsEXT işlevi, bir sistemde desteklenen grafik sunum yöntemlerini döndürür.

XrResult xrEnumerateSupportedSpatialContainerGraphicsPresentationsEXT(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    uint32_t                                    graphicsPresentationCapacityInput,
    uint32_t*                                   graphicsPresentationCountOutput,
    XrSpatialContainerGraphicsPresentationEXT*  graphicsPresentations);

Parametre Açıklamaları

  • instance, systemId öğesinin alındığı XrInstance'dır.
  • systemId, sorgulanan XrSystemId değeridir.
  • graphicsPresentationCapacityInput, graphicsPresentations dizisinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.
  • graphicsPresentationCountOutput, yazılan grafik sunularının sayısına işaret eden bir göstergedir veya graphicsPresentationCapacityInput değerinin 0 olması durumunda gerekli kapasiteye işaret eden bir göstergedir.
  • graphicsPresentations, XrSpatialContainerGraphicsPresentationEXT değerleri dizisine işaret eden bir göstergedir ancak graphicsPresentationCapacityInput 0 ise null olabilir.
  • Gerekli graphicsPresentations boyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.

Çalışma zamanları, belirli bir systemId için ve örneğin kullanım ömrü boyunca bu numaralandırmadan her zaman aynı arabellek içeriklerini döndürmelidir.

Geçerli Kullanım (Dolaylı)

Dönüş Kodları

Başarılı

  • XR_SUCCESS

Hata

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

Oturum durumunda yapılan değişiklikler

xrCreateSession çağrılırken bir XrSessionCreateInfoSpatialContainersEXT zincirlenerek oturum için uzamsal kapsayıcı desteği etkinleştirilir.

typedef struct XrSessionCreateInfoSpatialContainersEXT {
    XrStructureType    type;
    const void*        next;
} XrSessionCreateInfoSpatialContainersEXT;

Uzamsal kapsayıcı desteği etkinleştirildiğinde XrSession farklı şekilde davranır. Bunun nedeni, uzamsal kapsayıcılar kullanılırken oturumun artık ekranlarda resim içeriği sunmaması, bunun yerine uzamsal kapsayıcıların bunu yapmasıdır. Bu nedenle, bu uzantı etkinleştirildiğinde oturum "görünmez" olur. Diğer gözetimsiz uzantıların aksine, uygulamalar uzamsal kapsayıcılar aracılığıyla görüntü verileri gönderebilir.

Üç boyutlu kapsayıcı desteğini etkinleştirmek, temel OpenXR API'lerini aşağıdaki şekilde değiştirir.

çalışma zamanı: sistem veya cihaz kaybetme

çalışma zamanı: sistem veya cihaz kaybetme

xrDestroySession

xrDestroySession

BOŞTA
(çalışıyor)

BOŞTA...

xrGetSystem
xrCreateSession

xrGetSystem...

xrCreateInstance

xrCreateIn...

xrDestroySession

xrDestroySession

LOSS_PENDING
(çalışmıyor)

KAYIP BEKLENİYOR...

xrDestroyInstance

xrDestroyInstance

uygulama: isteğe bağlı olarak
XR'ı yeniden başlatın

uygulama: isteğe bağlı olarak...

19. şekil. Yeni oturum durum makinesi

  • Oturum hiçbir zaman XR_SESSION_STATE_VISIBLE, XR_SESSION_STATE_FOCUSED veya XR_SESSION_STATE_EXITING durumlarına girmez. Çalışma zamanları bu durumlar için etkinlikleri asla sıraya almamalıdır. Bu durumların yerini sırasıyla uzamsal kapsayıcı başına etkinlikler olan XrEventDataSpatialContainerVisibleChangedEXT, XrEventDataSpatialContainerInteractableChangedEXT ve XrEventDataSpatialContainerClosedEXT alır.
  • Oturum hiçbir zaman XR_SESSION_STATE_READY , XR_SESSION_STATE_SYNCHRONIZED , XR_SESSION_STATE_STOPPING durumlarına girmez. Çalışma zamanları bu durumlar için etkinlikleri asla sıraya almamalıdır. Bu durumların yerine geçecek başka bir durum yoktur.
  • Çalışma zamanları, oturumu XR_SESSION_STATE_IDLE durumundayken çalışıyor olarak değerlendirmelidir.
  • Çalışma zamanları, XR_SESSION_STATE_IDLE durumundayken ve etkileşim kurulabilen en az bir uzamsal kapsayıcı varken oturumu odaklanmış olarak ele almalıdır.
  • xrBeginSession ve xrEndSession işlevlerine artık gerek yoktur. Çalışma zamanları, bu işlevler çağrıldığında XR_ERROR_SPATIAL_CONTAINERS_ENABLED_EXT döndürmelidir. Diğer uzantılar bu işlevler için alternatifler sağlayabilir.
  • xrRequestExitSession işlevine de artık gerek yoktur. Çalışma zamanları, bu işlev çağrıldığında XR_ERROR_SPATIAL_CONTAINERS_ENABLED_EXT değerini döndürmelidir. Çalışan bir oturumdan çıkmak isteyen uygulamalar, kapsayıcılarını gizlemek için xrRequestSpatialContainerVisibleEXT'yi çağırabilir ve tüm kapsayıcılar görünmez olduktan sonra oturumu sonlandırabilir.
  • Oturum çalışmaya başladığında ek etkinlikleri sıraya alacak uzantıların artık bu etkinlikleri oturum oluşturulduktan sonra sıraya alması gerekir. Bu tür uzantılar aşağıda belirtilmiştir.

    Uzantı Etkinliği

XR_EXT_user_presence

XrEventDataUserPresenceChangedEXT

XR_META_boundary_visibility

XrEventDataBoundaryVisibilityChangedMETA

  • xrLocateViews işlevi, oturum için çağrılmaya uygun değil. Çalışma zamanları, xrLocateViews'dan XR_ERROR_SPATIAL_CONTAINERS_ENABLED_EXT değerini döndürmelidir. Diğer uzantılar, belirli bir uzamsal kapsayıcının görünümlerini bulmanın yollarını sağlayabilir.
  • xrWaitFrame işlevi, XrFrameState :: shouldRender değerini her zaman false olarak ayarlamalıdır. Diğer uzantılar, belirli bir uzamsal kapsayıcının kompozisyon katmanlarını güncellemesi gerekip gerekmediğini öğrenmenin yollarını sağlayabilir.
  • xrEndFrame işlevi, oluşturma katmanlarını göndermek için geçerli bir yöntem değildir. Bir uygulama XrFrameEndInfo :: layerCount değerini sıfır olmayan bir değere ayarlarsa çalışma zamanları XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir. Diğer uzantılar, belirli bir uzamsal kapsayıcı için kompozisyon katmanları gönderme yöntemleri sağlayabilir.
  • XR_SESSION_STATE_LOSS_PENDING durumuna girildiğinde tüm uzamsal kapsayıcılar da kapatılır. Çalışma zamanları, XR_SESSION_STATE_LOSS_PENDING için bir oturum durumu değişikliğini sıraya almadan önce her etkin uzamsal kapsayıcı için bir XrEventDataSpatialContainerClosedEXT etkinliğini sıraya almalıdır.
  • xrCreateSession işlevi için artık grafik API bağlama yapısı gerekmez. Diğer uzantılar, grafik bağlama gerektirebilir. Örneğin, bir uzamsal kapsayıcının grafik API'si kullanarak oluşturulması için grafik bağlama gerekebilir.

Yukarıdaki davranış, XR_MND_headless uygulamasındaki davranıştan biraz farklıdır. Çalışma zamanları, ilgili oturum için uzamsal kapsayıcı desteği etkinleştirildiğinde XR_MND_headless üzerinden başsız oturum davranışını etkinleştirmemelidir.

Not

Uzamsal kapsayıcılar etkinleştirildiğinde oturum yalnızca iki durum arasında geçiş yapar: XR_SESSION_STATE_IDLE (çalışıyor) ve XR_SESSION_STATE_LOSS_PENDING (çalışmıyor). Bu nedenle, çalışma zamanları artık XR_ERROR_SESSION_RUNNING veya XR_ERROR_SESSION_NOT_RUNNING döndürmez. Bunun yerine, bir oturum çalışmıyorken çalışma zamanları, OpenXR çekirdeğindeki kurallara göre XR_ERROR_SESSION_LOST veya XR_SESSION_LOSS_PENDING değerini döndürür. Ayrıca, XR_ERROR_SESSION_RUNNING döndüren tek işlev olan xrBeginSession artık her zaman XR_ERROR_SPATIAL_CONTAINERS_ENABLED_EXT döndürecek.

Geçerli Kullanım (Dolaylı)

Android Manifest girişleri

AOSP tabanlı çalışma zamanları, herhangi bir uygulama kodu çalıştırılmadan önce başlatılan ilk uzamsal kapsayıcı durumuna göre özel davranışlara sahip olabilir. Örneğin, çalışma zamanı, etkinlik için ayrılan kaynakları, başlatma animasyonlarını veya başlangıç ekranı görüntüsünü değiştirebilir. Bu amaçla aşağıdaki özellikler sağlanmıştır. Bu etiketler, uzamsal kapsayıcı tabanlı uygulamaların önceki AOSP tabanlı çalışma zamanlarıyla uyumluluk dışında belirtmemesi gereken <category android:name="org.khronos.openxr.intent.category.IMMERSIVE_HMD" /> etiketinin yerini alır.

<property android:name="org.khronos.openxr.PROPERTY_ACTIVITY_HINT_XR_SPATIAL_CONTAINER_USED_BOUNDS_MODES"
          android:value="list of modes" />

Bu özellik, çalışma zamanlarına bir etkinliğin kullandığı sınır modlarını belirtir. Varsayılan olarak boş bir listedir. Bu, ipucu olmadığı anlamına gelir.

Bu özellik için aşağıdaki dizeler geçerlidir. Birden fazla değer | ile ayrılır (ör. "bounded|immersive").

Değer

Açıklama

"2d_panel"

Etkinlik, Android'in 2D görünüm çerçevesi kullanılarak görüntülenir.

"bounded"

Etkinlikte XR_SPATIAL_CONTAINER_BOUNDS_MODE_BOUNDED_EXT kullanılıyor.

"immersive"

Etkinlikte XR_SPATIAL_CONTAINER_BOUNDS_MODE_IMMERSIVE_EXT kullanılıyor.

<property android:name="org.khronos.openxr.PROPERTY_ACTIVITY_HINT_XR_SPATIAL_CONTAINER_INITIAL_BOUNDS_MODE"
          android:value="XR_SPATIAL_CONTAINER_INITIAL_BOUNDS_MODE_BOUNDED|
                         XR_SPATIAL_CONTAINER_INITIAL_BOUNDS_MODE_IMMERSIVE|
                         XR_SPATIAL_CONTAINER_INITIAL_BOUNDS_MODE_UNDEFINED" />

Bu özellik, çalışma zamanlarına etkinliğin ilk oluşturulduğunda ilk XrSpatialContainerBoundsModeEXT değerini belirtir. Varsayılan olarak XR_SPATIAL_CONTAINER_INITIAL_BOUNDS_MODE_UNDEFINED dizesidir. Bu dize, herhangi bir ipucu olmadığı anlamına gelir.

Çalışma zamanları, uygulamaların bu spesifikasyona göre davranması için bu özelliklere sahip olmasını gerektirmemelidir. Çalışma zamanları, bu özelliklere göre uygulamanın görünür davranışını değiştirmemelidir. Bu tür meta verilerin tümü <activity> veya <application> düzeyinde belirtilebilmelidir. <application> düzeyinde belirtilirse uygulamadaki kendi değerlerini belirtmeyen tüm etkinlikler için geçerli olur.

Örnek kod

Aşağıdaki kod, bu uzantının herhangi bir oluşturma işlemi olmadan yalnızca algılama kullanım alanları için nasıl kullanılacağını gösterir.

XrInstance instance;    // Already initialized


// Create the session with spatial containers enabled
XrSession session;

XrSessionCreateInfoSpatialContainersEXT spatialContainerCreateInfo {
  .type = XR_TYPE_SESSION_CREATE_INFO_SPATIAL_CONTAINERS_EXT,
};
XrSessionCreateInfo sessionCreateInfo {
  .type = XR_TYPE_SESSION_CREATE_INFO,
  .next = &spatialContainerCreateInfo,   // Enable spatial containers
};
(void)sessionCreateInfo.systemId;                             // Other create fields set in usual way

CHK_XR(xrCreateSession(instance, &sessionCreateInfo, &session));


// Because spatial containers are enabled, the session is considered
// running. App is able to query perception data such as head poses and hand
// poses.


// Based on app logic or when a system lost event happens, destroy the
// session
CHK_XR(xrDestroySession(session));

Yeni nesne türleri

Yeni Komutlar

Yeni Yapılar

Yeni Enum Veri Türleri

Yeni Enum Sabitleri

  • XR_EXT_SPATIAL_CONTAINER_EXTENSION_NAME
  • XR_EXT_spatial_container_SPEC_VERSION
  • XrObjectType'i genişletme:

    • XR_OBJECT_TYPE_SPATIAL_CONTAINER_EXT
  • XrResult'ı genişletme:

    • XR_ERROR_COMPATIBLE_SPATIAL_CONTAINER_MISSING_EXT
    • XR_ERROR_SPATIAL_CONTAINERS_ENABLED_EXT
    • XR_ERROR_SPATIAL_CONTAINERS_NOT_ENABLED_EXT
    • XR_ERROR_SPATIAL_CONTAINER_CLOSED_EXT
  • XrStructureType'ı genişletme:

    • XR_TYPE_EVENT_DATA_SPATIAL_CONTAINER_BOUNDS_CHANGED_EXT
    • XR_TYPE_EVENT_DATA_SPATIAL_CONTAINER_BOUNDS_MODE_REQUEST_DENIED_EXT
    • XR_TYPE_EVENT_DATA_SPATIAL_CONTAINER_CLOSED_EXT
    • XR_TYPE_EVENT_DATA_SPATIAL_CONTAINER_INTERACTABLE_CHANGED_EXT
    • XR_TYPE_EVENT_DATA_SPATIAL_CONTAINER_VISIBLE_CHANGED_EXT
    • XR_TYPE_EVENT_DATA_SPATIAL_CONTAINER_VISIBLE_REQUEST_DENIED_EXT
    • XR_TYPE_SESSION_CREATE_INFO_SPATIAL_CONTAINERS_EXT
    • XR_TYPE_SPATIAL_CONTAINER_BOUNDS_EXT
    • XR_TYPE_SPATIAL_CONTAINER_BOUNDS_GET_INFO_EXT
    • XR_TYPE_SPATIAL_CONTAINER_BOUNDS_MODE_REQUEST_INFO_EXT
    • XR_TYPE_SPATIAL_CONTAINER_CREATE_INFO_EXT
    • XR_TYPE_SPATIAL_CONTAINER_SPACE_CREATE_INFO_EXT
    • XR_TYPE_SPATIAL_CONTAINER_STATE_EXT
    • XR_TYPE_SPATIAL_CONTAINER_STATE_GET_INFO_EXT
    • XR_TYPE_SPATIAL_CONTAINER_VISIBLE_REQUEST_INFO_EXT
    • XR_TYPE_SYSTEM_SPATIAL_CONTAINER_PROPERTIES_EXT

Sayılar

  • Birden fazla bekleyen görünür isteği nasıl işleriz? Uygulama bir değişiklik/reddedilen geri alma işlemi mi yoksa birden fazla mı almalı? Aramalar birden fazla karede yapılıyorsa yanıt farklı olabilir. Birden fazla istek, işlem yapılmamasıyla sonuçlanırsa da yanıt farklı olabilir. Örneğin, görünür olmayan bir kapsayıcı için önce görünür, sonra görünür olmaması istenirse.

    • Çözüldü. Değişiklik etkinlikleri ve reddedilen etkinlikler için farklı seçenekler. Noop istekleri bir değişiklik etkinliğini sıraya almaz. Bu, uygulama geliştirici için yalnızca gürültü oluşturur ve çalışma zamanlarının filtrelemesi kolaydır. Görünür birden fazla istek reddedilirse çalışma zamanlarının her biri, ilgili reddedilen etkinliği oluşturmalıdır.
  • Uygunluk otomasyonu uzantısının, politika davranışlarıyla ilgili tüm isteğe bağlı spesifikasyon metinlerinin CTS tarafından test edilebilmesi için nasıl tanımlanması beklenir?

    • Çözüldü. Ayrı test uzantısı. Yalnızca CTS için bir test uzantısı çalışma zamanı uygulaması olacak ve CTS'nin tüm sistem politikasını kontrol etmesine olanak tanıyacak.
  • Uzamsal kapsayıcının konumu değiştiğinde bir etkinliğe ihtiyacımız var mı?

    • Çözüldü. Hayır. Uzamsal kapsayıcı alanı, dünyaya kilitli değildir ve XR_REFERENCE_SPACE_TYPE_VIEW gibi diğer alanlar değiştiğinde etkinlikler gerçekleşmez.
  • Birden fazla uzamsal kapsayıcı varsa xrSyncActions nasıl çalışır?

    • Çözüldü. Değişiklik yapılması gerekmez. xrSyncActions, oturumdaki tüm uzamsal kapsayıcılar için geçerli olur. Bir uygulama, giriş işlemlerini belirli bir uzamsal kapsayıcıya yönlendirmek istiyorsa hangi kapsayıcıların geçerli hedefler olduğunu seçmek için kapsayıcı başına etkileşimli duruma bakabilir. Bir uygulama yalnızca tek bir uzamsal kapsayıcı için giriş işlemi durumunu senkronize etmek istiyorsa ek bir uzantı gerekir. Ancak bunun yerine, uygulamaların tamamen etkinliğe dayalı olmasını sağlayan ve kare döngüsünde xrSyncActions çağrısı yapma ihtiyacını ortadan kaldıran bir uzantıya odaklanmayı planlıyoruz.
  • Seyrek güncellenen uygulamalar girişleri nasıl işler?

    • Çözüldü. Herhangi bir değişiklik yapılması gerekmez. EXT_spatial_container için değerli olsa da uzamsal kapsayıcıların dışında da değerlidir. Bu durum, bir etkinlik kanalı uzantısı aracılığıyla ele alınabilir ve her iki durumda da çalışır. Tek bir uzamsal kapsayıcıdaki etkinlikleri filtrelemek için ek yöntemler ekleyeceğiz.
  • Giriş ve oluşturma döngüleri ayrılmış uygulamalarda giriş döngüsünün zamanlamasını kısıtlamak/kontrol etmek için beklememiz gerekir mi?

    • Çözüldü. Herhangi bir değişiklik yapılması gerekmez. Bu işlemin, etkinlik kanalı ve mevcut istek uzantıları aracılığıyla gerçekleştirilmesi beklenir. Present request uzantısı, oluşturma işleminin etkinliğe dayalı olmasını ve kare döngüsünden ayrılmasını sağlar.
  • Üç boyutlu kapsayıcılar, diğer üç boyutlu kapsayıcılara göre konumunu alabilir mi? Burada dikkat edilmesi gereken nokta, bu teknolojinin kullanım alanının olup olmadığıdır. Öyleyse, uzamsal kapsayıcı alanları LOCAL ile nasıl bağlantı kurar?

    • Çözüldü. Evet. Bu, XR_REFERENCE_SPACE_TYPE_VIEW üzerinden aynı oturumdaki uzamsal kapsayıcılar için zaten mümkündür ve görünüme bağlı içeriğin desteklenmesi tercih edilir. Oturumlar arasında (ör. başka bir işleme) uzamsal kapsayıcı pozlarını paylaşmak için beklenen yol, XR_EXT_spatial_anchor ve mevcut kalıcılık ve paylaşım kalıplarından yararlanmaktır.
  • Görünür olmayan bir uzamsal kapsayıcının alanı bulunabilir mi?

    • Çözüldü. Hayır. Üç boyutlu kapsayıcı görünür olmadığında üç boyutlu kapsayıcının alanı bulunamaz. Bu, uygulamanın üç boyutlu sese sahip olmadığı ve spatial_container görünür olmadığında görünüme bağlı içeriği "hazırlayamayacağı" anlamına gelir. Üç boyutlu kapsayıcı görünür olmadığında uygulamanın, bu üç boyutlu kapsayıcı için kullanılan tüm CPU/GPU yükünü durdurması beklendiğinden her iki durum da normaldir.
  • Üç boyutlu kapsayıcı alanının, üç boyutlu kapsayıcıda nereye yerleştirilmesi bekleniyor? Öneriler, merkez veya minimum nokta (minX, minY, minZ) olmuştur.

    • Çözüldü. Ortada. Mekansal kapsayıcı yeniden boyutlandırma kullanıcı deneyiminin beklendiği çoğu şekilde (hareketli kenarlar) hareket etmeyen bir konum yoktur. Center, OpenXR'ın diğer bölümlerinde yaygın olarak kullanılır. 3D model görüntüleyiciler genellikle bu kurala uymadığından, minimum koordinatı kullanan 2D bilgi işlemdeki pencerelerle uyumlu hale getirmedik.
  • Çalışma zamanının, uzamsal kapsayıcının temelini oluşturan kaynakları ne zaman oluşturması beklenir? Bu işlem bazen sistem hizmetleriyle IPC'yi içerir.

    • Çözüldü. xrCreateSpatialContainerEXT kapsamında eşzamanlı olarak. IPC söz konusu olsa da bir container'ın gerçekte oluşturulmasının genellikle ucuz olması beklenir. Bazı tedarikçilerin container'ları yönetmeyle ilgili global mutex'leri vardır ancak bunların genellikle uzun bir bekleme süresi olması beklenmez. Karşılıklı dışlama çekişmesiyle ilgili sorunlar, her tedarikçi tarafından giderilmesi beklenen tedarikçiye özgü hatalardır.
  • Bir XrSession'ın uzamsal kapsayıcılar oluşturacağını ve bu nedenle eski oluşturma yolunu desteklemeyeceğini belirten bir sinyale ihtiyacımız var mı?

    • Çözüldü. Evet. Oturum durumu makinesini kökten değiştiriyoruz.

Sürüm Geçmişi

  • Düzeltme 1, 06.08.2026 (Jared Finder, Google)

    • İlk uzantı açıklaması