XR_ANDROID_global_passthrough_dimming
Name String
XR_ANDROID_global_passthrough_dimming
Typ rozszerzenia
Rozszerzenie instancji
Zarejestrowany numer wewnętrzny
797
Wersja
1
Stan ratyfikacji
Nie ratyfikowano
Zależności rozszerzeń i wersji
Data ostatniej modyfikacji
2026-03-10
Stan IP
Brak znanych roszczeń dotyczących własności intelektualnej.
Twórcy
Brian Chen, Google
Kyle Chen, Google
Nihav Jain, Google
Spencer Quin, Google
Przegląd
Wraz z wprowadzeniem urządzeń z optycznym trybem przezroczystości ważne jest nie tylko umożliwienie aplikacjom dostosowywania poziomu przyciemnienia trybu przezroczystości, aby zapewnić użytkownikowi najlepsze połączenie z kontekstem aplikacji, ale także umożliwienie systemowi rozjaśniania trybu przezroczystości ze względów bezpieczeństwa.
To rozszerzenie udostępnia aplikacjom 2 funkcje do ustawiania i pobierania bieżącego poziomu przyciemnienia, a także zdarzenie do transmitowania, gdy poziom przyciemnienia się zmieni.
Sprawdzanie możliwości systemu
Struktura XrSystemGlobalDimmingPropertiesANDROID jest zdefiniowana w ten sposób:
typedef struct XrSystemGlobalDimmingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsGlobalDimming;
} XrSystemGlobalDimmingPropertiesANDROID;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowym interfejsie OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur. W podstawowym interfejsie OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.supportsGlobalDimmingtoXrBool32, który wskazuje, czy bieżący system obsługuje globalne przyciemnianie.
Aplikacja może sprawdzić, czy system obsługuje globalne przyciemnianie, przez połączenie struktury XrSystemGlobalDimmingPropertiesANDROID z XrSystemProperties podczas wywoływania xrGetSystemProperties .
Jeśli środowisko wykonawcze zwraca XR_FALSE dla supportsGlobalDimming, musi zwracać XR_ERROR_FEATURE_UNSUPPORTED, gdy wywoływana jest funkcja xrGetGlobalDimmingLevelANDROID.
Prawidłowe użycie (pośrednie)
- Rozszerzenie
XR_ANDROID_global_passthrough_dimmingmusi być włączone przed użyciem XrSystemGlobalDimmingPropertiesANDROID. -
typemusi mieć wartośćXR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROID -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur
Wylicz obsługiwane poziomy globalnego przyciemniania
Struktura xrEnumerateSupportedGlobalDimmingLevelsANDROID jest zdefiniowana w ten sposób:
XrResult xrEnumerateSupportedGlobalDimmingLevelsANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t supportedGlobalDimmingLevelCapacityInput,
uint32_t* supportedGlobalDimmingLevelCountOutput,
float* supportedGlobalDimmingLevels);
Opisy członków
instanceto instancja, z której pobranosystemId.systemIdtoXrSystemId, którego obsługiwane poziomy zostaną wymienione.supportedGlobalDimmingLevelCapacityInputto pojemność tablicysupportedGlobalDimmingLevelslub 0, co oznacza prośbę o pobranie wymaganej pojemności.supportedGlobalDimmingLevelCountOutputto wskaźnik liczby zapisanychsupportedGlobalDimmingLevelslub wskaźnik wymaganej pojemności, jeślisupportedGlobalDimmingLevelCapacityInputjest niewystarczająca.supportedGlobalDimmingLevelsto wskaźnik do tablicy obsługiwanych poziomów, ale może mieć wartość NULL, jeślisupportedGlobalDimmingLevelCapacityInputwynosi 0.
Jeśli zwrócona wartość supportedGlobalDimmingLevelCountOutput wynosi 0, obsługiwane są wszystkie poziomy globalnego przyciemniania od 0,0 do 1,0.
xrEnumerateSupportedGlobalDimmingLevelsANDROID wylicza poziomy globalnego przyciemniania obsługiwane przez XrSystemId . Obsługiwane poziomy nie mogą się zmieniać w czasie istnienia instancji XrInstance . Zwrócona lista poziomów musi być posortowana w kolejności rosnącej.
Środowiska wykonawcze muszą zawsze zwracać identyczną zawartość bufora z tego wyliczenia dla danego systemId i przez cały okres istnienia instance .
Prawidłowe użycie (pośrednie)
- Rozszerzenie
XR_ANDROID_global_passthrough_dimmingmusi być włączone przed wywołaniem funkcji xrEnumerateSupportedGlobalDimmingLevelsANDROID. -
instancemusi być prawidłowym uchwytem XrInstance -
supportedGlobalDimmingLevelCountOutputmusi być wskaźnikiem do wartościuint32_t - Jeśli
supportedGlobalDimmingLevelCapacityInputnie jest0,supportedGlobalDimmingLevelsmusi być wskaźnikiem do tablicy wartościsupportedGlobalDimmingLevelCapacityInputfloat
Kody zwrotu
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
Konfigurowanie poziomu globalnego przyciemnienia
Struktura XrGlobalDimmingFrameEndInfoANDROID jest zdefiniowana w ten sposób:
typedef struct XrGlobalDimmingFrameEndInfoANDROID {
XrStructureType type;
const void* next;
float globalDimmingLevel;
} XrGlobalDimmingFrameEndInfoANDROID;
Opisy parametrów
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowym interfejsie OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.globalDimmingLevelto wartość z zakresu od 0,0 (przezroczysty) do 1,0 (nieprzezroczysty). Środowisko wykonawcze może zmapować tę wartość na najbliższy obsługiwany poziom globalnego przyciemniania. Aplikacja może ustawić tę wartość na -1,0, aby wskazać, że preferowany jest bieżący poziom przyciemnienia.
Wartość globalDimmingLevel określa procent blokowanego światła, gdzie wartość 0,0 odpowiada 0% blokowanego światła, a 1,0 odpowiada 100% blokowanego światła. Odsetek zablokowanego światła można ogólnie przedstawić w ten sposób:
100% - Light Transmittance%
Zgodnie z normą ISO 8980-3:2022 procent przepuszczalności światła można mierzyć jako stosunek przepuszczanego strumienia promieniowania do padającego strumienia promieniowania przy długościach fal światła widzialnego (od 380 nm do 780 nm).
XrGlobalDimmingFrameEndInfoANDROID to struktura, którą aplikacja może połączyć w łańcuch w XrFrameEndInfo, aby poprosić o preferowany poziom globalnego przyciemnienia.
Środowisko wykonawcze musi uwzględniać żądany poziom przyciemnienia, jeśli różni się on od bieżącego.
Środowisko wykonawcze będzie kontrolować poziom globalnego przyciemnienia i może ze względów bezpieczeństwa ignorować preferowany poziom globalnego przyciemnienia.
Prawidłowe użycie (pośrednie)
- Rozszerzenie
XR_ANDROID_global_passthrough_dimmingmusi być włączone przed użyciem XrGlobalDimmingFrameEndInfoANDROID. -
typemusi mieć wartośćXR_TYPE_GLOBAL_DIMMING_FRAME_END_INFO_ANDROID -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur
Funkcja xrGetGlobalDimmingLevelANDROID jest zdefiniowana w ten sposób:
XrResult xrGetGlobalDimmingLevelANDROID(
XrSession session,
float* dimmingLevel);
Opisy parametrów
sessionto prawidłowy uchwyt XrSession.dimmingLevelto wskaźnik bieżącego poziomu przyciemnienia.
Zwrócona wartość dimmingLevel musi mieścić się w zakresie od 0,0 do 1,0, gdzie 0,0 oznacza pełną przezroczystość, a 1,0 – pełne przyciemnienie.
Jeśli poziom przyciemnienia nie został ustawiony, środowisko wykonawcze musi ustawić poziom przyciemnienia na 0,0, gdy tryb passthrough jest włączony, i na 1,0, gdy tryb passthrough jest wyłączony.
Prawidłowe użycie (pośrednie)
- Rozszerzenie
XR_ANDROID_global_passthrough_dimmingmusi być włączone przed wywołaniem xrGetGlobalDimmingLevelANDROID. -
sessionmusi być prawidłowym uchwytem XrSession -
dimmingLevelmusi być wskaźnikiem do wartościfloat
Kody zwrotu
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
Zdarzenie zmiany poziomu ściemniania
Struktura XrEventDataGlobalDimmingLevelChangedANDROID jest zdefiniowana w ten sposób:
typedef struct XrEventDataGlobalDimmingLevelChangedANDROID {
XrStructureType type;
const void* next;
XrSession session;
} XrEventDataGlobalDimmingLevelChangedANDROID;
Opisy członków
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur. W podstawowym interfejsie OpenXR ani w tym rozszerzeniu nie zdefiniowano takich struktur.sessionto prawidłowy uchwyt XrSession.
Aplikacja może pobrać to zdarzenie za pomocą xrPollEvent . To zdarzenie zostanie wysłane, gdy poziom przyciemnienia zostanie zmieniony przez aplikacje lub przyciski fizyczne na urządzeniach.
To zdarzenie nie zostanie wysłane, gdy aplikacja, na której skupia się użytkownik, zostanie przełączona na inną.
Aplikacja powinna odpowiedzieć na zdarzenie, wywołując funkcję xrGetGlobalDimmingLevelANDROID, aby uzyskać nowy poziom przyciemnienia i odpowiednio zaktualizować XrGlobalDimmingFrameEndInfoANDROID :: globalDimmingLevel. Odpowiedź na zdarzenie gwarantuje, że środowisko wykonawcze otrzyma sygnał, gdy aplikacja zmieni preferowany poziom przyciemnienia.
Prawidłowe użycie (pośrednie)
- Rozszerzenie
XR_ANDROID_global_passthrough_dimmingmusi być włączone przed użyciem XrEventDataGlobalDimmingLevelChangedANDROID. -
typemusi mieć wartośćXR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROID -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur
Przykładowy kod
Sprawdzanie możliwości systemu i wyliczanie obsługiwanych poziomów globalnego przyciemniania
Poniższy przykładowy kod pokazuje, jak sprawdzić, czy globalne przyciemnianie jest obsługiwane.
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()));
Zdarzenie zmiany poziomu ściemniania podczas sondowania
Poniższy przykładowy kod pokazuje, jak odpytywać zdarzenie zmiany poziomu ściemnienia.
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()
}
}
Nowe polecenia
Nowe domy
- XrEventDataGlobalDimmingLevelChangedANDROID
Rozszerzenie XrFrameEndInfo :
Rozszerzanie XrSystemProperties :
Nowe stałe typu wyliczeniowego
XR_ANDROID_GLOBAL_PASSTHROUGH_DIMMING_EXTENSION_NAMEXR_ANDROID_global_passthrough_dimming_SPEC_VERSIONRozszerzanie XrStructureType :
XR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROIDXR_TYPE_GLOBAL_DIMMING_FRAME_END_INFO_ANDROIDXR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROID
Problemy
Historia zmian
Wersja 1, 7 października 2025 r. (Brian Chen)
- Początkowy opis rozszerzenia.