XR_ANDROID_global_passthrough_dimming
Name String
XR_ANDROID_global_passthrough_dimming
Uzantı Türü
Örnek uzantısı
Kayıtlı Dahili Numara
797
Düzeltme
1
Onay Durumu
Onaylanmadı
Uzantı ve Sürüm Bağımlılıkları
Son Değiştirilme Tarihi
2026-03-10
IP Durumu
Bilinen bir fikri mülkiyet hak talebi yok.
Katkıda bulunanlar
Brian Chen, Google
Kyle Chen, Google
Nihav Jain, Google
Spencer Quin, Google
Genel Bakış
Optik şeffaf cihazlar kullanıma sunuldukça, uygulamaların geçişin karanlığını ayarlamasına izin vererek kullanıcıya uygulama bağlamıyla en iyi karışımı sunmak önemlidir. Ayrıca, güvenlik nedeniyle sistemin geçişi karartmasına izin vermek de önemlidir.
Bu uzantı, uygulamaların mevcut karartma seviyesini ayarlaması ve alması için iki işlevin yanı sıra karartma seviyesi değiştiğinde yayınlanacak bir etkinlik sağlar.
Sistem özelliğini inceleme
XrSystemGlobalDimmingPropertiesANDROID yapısı şu şekilde tanımlanır:
typedef struct XrSystemGlobalDimmingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsGlobalDimming;
} XrSystemGlobalDimmingPropertiesANDROID;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya 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. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.supportsGlobalDimming, mevcut sistemin genel karartmayı destekleyip desteklemediğini gösteren birXrBool32değeridir.
Bir uygulama, xrGetSystemProperties işlevini çağırırken XrSystemProperties'e bir XrSystemGlobalDimmingPropertiesANDROID yapısı zincirleyerek sistemin genel karartmayı destekleyip desteklemediğini inceleyebilir.
Çalışma zamanı, supportsGlobalDimming için XR_FALSE döndürürse xrGetGlobalDimmingLevelANDROID çağrıldığında XR_ERROR_FEATURE_UNSUPPORTED döndürmesi gerekir.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_global_passthrough_dimminguzantısı, XrSystemGlobalDimmingPropertiesANDROID kullanılmadan önce etkinleştirilmelidir. -
typeXR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROIDolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır.
Desteklenen genel karartma seviyelerini listeleme
xrEnumerateSupportedGlobalDimmingLevelsANDROID yapısı şu şekilde tanımlanır:
XrResult xrEnumerateSupportedGlobalDimmingLevelsANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t supportedGlobalDimmingLevelCapacityInput,
uint32_t* supportedGlobalDimmingLevelCountOutput,
float* supportedGlobalDimmingLevels);
Üye Açıklamaları
instance,systemIdöğesinin alındığı örnektir.systemId, desteklenen düzeyleri numaralandırılacakXrSystemIddeğeridir.supportedGlobalDimmingLevelCapacityInput,supportedGlobalDimmingLevelsdizisinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0'dır.supportedGlobalDimmingLevelCountOutput, yazılansupportedGlobalDimmingLevelssayısına yönelik bir işaretçi veyasupportedGlobalDimmingLevelCapacityInputdeğerinin yetersiz olması durumunda gerekli kapasiteye yönelik bir işaretçidir.supportedGlobalDimmingLevels, desteklenen seviyeler dizisine işaret eder ancaksupportedGlobalDimmingLevelCapacityInput0 ise NULL olabilir.
Döndürülen supportedGlobalDimmingLevelCountOutput değeri 0 ise 0,0 ile 1,0 arasındaki tüm genel karartma seviyeleri desteklenir.
xrEnumerateSupportedGlobalDimmingLevelsANDROID, XrSystemId tarafından desteklenen genel karartma seviyelerini listeler. Desteklenen seviyeler, XrInstance'ın kullanım ömrü boyunca değişmemelidir. Döndürülen seviye listesi artan düzende sıralanmış olmalıdır.
Çalışma zamanları, belirli bir systemId için ve instance'nin kullanım ömrü boyunca bu numaralandırmadan her zaman aynı arabellek içeriklerini döndürmelidir.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_global_passthrough_dimminguzantısı, xrEnumerateSupportedGlobalDimmingLevelsANDROID çağrılmadan önce etkinleştirilmelidir -
instancegeçerli bir XrInstance herkese açık kullanıcı adı olmalıdır -
supportedGlobalDimmingLevelCountOutput, biruint32_tdeğerine işaretçi olmalıdır -
supportedGlobalDimmingLevelCapacityInput,0değilsesupportedGlobalDimmingLevels,supportedGlobalDimmingLevelCapacityInputfloatdeğerlerinden oluşan bir dizinin işaretçisi olmalıdır.
Dönüş Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
Genel Karartma Seviyesini Yapılandır
XrGlobalDimmingFrameEndInfoANDROID yapısı şu şekilde tanımlanır:
typedef struct XrGlobalDimmingFrameEndInfoANDROID {
XrStructureType type;
const void* next;
float globalDimmingLevel;
} XrGlobalDimmingFrameEndInfoANDROID;
Parametre Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya 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.globalDimmingLevel, 0,0 (şeffaf) ile 1,0 (opak) arasında bir değerdir. Çalışma zamanı, bu değeri desteklenen en yakın global karartma seviyesiyle eşleyebilir. Uygulama, mevcut karartma düzeyinin tercih edildiğini belirtmek için bu değeri -1,0 olarak ayarlayabilir.
globalDimmingLevel değeri, engellenen ışığın yüzdesini belirtir. 0,0 değeri% 0 ışık engellemeye, 1,0 ise% 100 ışık engellemeye karşılık gelir. Engellenen ışığın yüzdesi genel olarak şu şekilde gösterilebilir:
100% - Light Transmittance%
ISO 8980-3:2022 uyarınca ışık geçirgenliği yüzdesi, görünür ışık dalga boylarında (380 nm ila 780 nm) iletilen ışınım akısının gelen ışınım akısına oranı olarak ölçülebilir.
XrGlobalDimmingFrameEndInfoANDROID, bir uygulamanın tercih edilen genel karartma düzeyini istemek için XrFrameEndInfo'da zincirleyebileceği bir yapıdır.
İstenen karartma seviyesi mevcut karartma seviyesinden farklıysa çalışma zamanı, istenen karartma seviyesini uygulamalıdır.
Çalışma zamanı, genel karartma seviyesini kontrol eder ve güvenlik nedeniyle tercih edilen genel karartma seviyesini yok sayabilir.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_global_passthrough_dimminguzantısı, XrGlobalDimmingFrameEndInfoANDROID kullanılmadan önce etkinleştirilmelidir. -
typeXR_TYPE_GLOBAL_DIMMING_FRAME_END_INFO_ANDROIDolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır.
xrGetGlobalDimmingLevelANDROID işlevi şu şekilde tanımlanır:
XrResult xrGetGlobalDimmingLevelANDROID(
XrSession session,
float* dimmingLevel);
Parametre Açıklamaları
session, geçerli bir XrSession herkese açık adıdır.dimmingLevel, mevcut karartma seviyesini gösteren bir işaretçidir.
Döndürülen dimmingLevel 0,0 ile 1,0 arasında olmalıdır. 0,0 tamamen şeffaf, 1,0 ise tamamen karartılmış anlamına gelir.
Karartma seviyesi ayarlanmadıysa çalışma zamanı, geçiş etkinleştirildiğinde karartma seviyesini 0,0, devre dışı bırakıldığında ise 1,0 olarak ayarlamalıdır.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_global_passthrough_dimminguzantısı, xrGetGlobalDimmingLevelANDROID çağrılmadan önce etkinleştirilmelidir -
sessiongeçerli bir XrSession herkese açık kullanıcı adı olmalıdır -
dimmingLevel, birfloatdeğerine işaretçi olmalıdır
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
Karartma Seviyesi Değiştirildi Etkinliği
XrEventDataGlobalDimmingLevelChangedANDROID yapısı şu şekilde tanımlanır:
typedef struct XrEventDataGlobalDimmingLevelChangedANDROID {
XrStructureType type;
const void* next;
XrSession session;
} XrEventDataGlobalDimmingLevelChangedANDROID;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya 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.session, geçerli bir XrSession herkese açık adıdır.
Uygulama, xrPollEvent kullanarak bu etkinliği alabilir. Bu etkinlik, karartma seviyesi uygulamalar veya cihazlardaki fiziksel düğmeler tarafından değiştirildiğinde gönderilir.
Odaklanılan uygulama başka bir uygulamaya geçtiğinde bu etkinlik gönderilmez.
Uygulama, yeni karartma seviyesini almak için xrGetGlobalDimmingLevelANDROID'i çağırarak etkinliğe yanıt vermelidir ve XrGlobalDimmingFrameEndInfoANDROID :: globalDimmingLevel değerini buna göre güncellemelidir. Etkinliğe yanıt vermek, uygulama tercih edilen karartma düzeyini değiştirdiğinde çalışma zamanına sinyal gönderilmesini sağlar.
Geçerli Kullanım (Dolaylı)
- XrEventDataGlobalDimmingLevelChangedANDROID kullanılmadan önce
XR_ANDROID_global_passthrough_dimminguzantısı etkinleştirilmelidir. -
typeXR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROIDolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır.
Örnek kod
Sistem kapasitesini kontrol etme ve desteklenen global karartma seviyelerini listeleme
Aşağıdaki örnek kodda, genel karartmanın desteklenip desteklenmediğinin nasıl kontrol edileceği gösterilmektedir.
XrInstance instance; // previously initialized
XrSystemId systemId; // previously initialized
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrEnumerateSupportedGlobalDimmingLevelsANDROID xrEnumerateSupportedGlobalDimmingLevelsANDROID;
XrSystemGlobalDimmingPropertiesANDROID dimmingControlSystemProperties { XR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROID };
XrSystemProperties systemProperties; // Chain dimmingControlSystemProperties
// ...
// Run xrGetSystemProperties()
// ...
if (!dimmingControlSystemProperties.supportsGlobalDimming) {
// The system does not support global dimming
return;
}
// Enumerate supported levels
uint32_t count = 0;
CHK_XR(xrEnumerateSupportedGlobalDimmingLevelsANDROID(instance, systemId, count, &count, nullptr));
std::vector<float> supportedLevels(count);
CHK_XR(xrEnumerateSupportedGlobalDimmingLevelsANDROID(instance, systemId, count, &count, supportedLevels.data()));
Anket Karartma Seviyesi Değiştirildi Etkinliği
Aşağıdaki örnek kod, karartma seviyesi değiştirildi etkinliğinin nasıl sorgulanacağını gösterir.
XrEventDataBuffer event{ XR_TYPE_EVENT_DATA_BUFFER };
// ...
// Run xrPollEvent()
// ...
switch (event.type) {
// This event will not be sent when focused app switches
case XR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROID:
{
const XrEventDataGlobalDimmingLevelChangedANDROID &dimmingLevelChangedEvent =
*reinterpret_cast<XrEventDataGlobalDimmingLevelChangedANDROID *>(&event);
// Query new dimming level using xrGetGlobalDimmingLevelANDROID()
}
}
Yeni Komutlar
Yeni Yapılar
- XrEventDataGlobalDimmingLevelChangedANDROID
XrFrameEndInfo'yu genişletme:
XrSystemProperties'i genişletme:
Yeni Enum Sabitleri
XR_ANDROID_GLOBAL_PASSTHROUGH_DIMMING_EXTENSION_NAMEXR_ANDROID_global_passthrough_dimming_SPEC_VERSIONXrStructureType'ı genişletme:
XR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROIDXR_TYPE_GLOBAL_DIMMING_FRAME_END_INFO_ANDROIDXR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROID
Sayılar
Sürüm Geçmişi
Düzeltme 1, 07.10.2025 (Brian Chen)
- İlk uzantı açıklaması.