XR_ANDROID_global_passthrough_dimming
Name String
XR_ANDROID_global_passthrough_dimming
Erweiterungstyp
Instanzerweiterung
Registrierte Durchwahl
797
Revision
1
Ratification Status
Nicht ratifiziert
Erweiterungs- und Versionsabhängigkeiten
Datum der letzten Änderung
2026-03-10
IP-Status
Keine bekannten Ansprüche auf geistiges Eigentum.
Mitwirkende
Brian Chen, Google
Kyle Chen, Google
Nihav Jain, Google
Spencer Quin, Google
Übersicht
Mit der Einführung von Geräten mit optischem Durchblick ist es wichtig, dass Anwendungen die Dunkelheit des Passthrough anpassen können, um dem Nutzer die beste Verschmelzung mit dem App-Kontext zu bieten. Außerdem muss das System den Passthrough aus Sicherheitsgründen aufhellen können.
Diese Erweiterung bietet zwei Funktionen, mit denen Apps die aktuelle Dimmstufe festlegen und abrufen können, sowie ein Ereignis, das übertragen wird, wenn sich die Dimmstufe ändert.
Systemkapazität prüfen
Die Struktur XrSystemGlobalDimmingPropertiesANDROID ist so definiert:
typedef struct XrSystemGlobalDimmingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsGlobalDimming;
} XrSystemGlobalDimmingPropertiesANDROID;
Mitgliederbeschreibungen
typeist der XrStructureType dieser Struktur.nextistNULLoder ein Zeiger auf die nächste Struktur in einer Strukturkette. Solche Strukturen sind weder in OpenXR noch in dieser Erweiterung definiert. Solche Strukturen sind weder in OpenXR noch in dieser Erweiterung definiert.supportsGlobalDimmingist einXrBool32, der angibt, ob das aktuelle System globales Dimmen unterstützt.
Eine Anwendung kann prüfen, ob das System globales Dimmen unterstützt, indem sie beim Aufruf von xrGetSystemProperties eine XrSystemGlobalDimmingPropertiesANDROID-Struktur an die XrSystemProperties anhängt.
Wenn die Laufzeit XR_FALSE für supportsGlobalDimming zurückgibt, muss sie XR_ERROR_FEATURE_UNSUPPORTED zurückgeben, wenn xrGetGlobalDimmingLevelANDROID aufgerufen wird.
Gültige Verwendung (implizit)
- Die Erweiterung
XR_ANDROID_global_passthrough_dimmingmuss aktiviert sein, bevor XrSystemGlobalDimmingPropertiesANDROID verwendet werden kann. -
typemussXR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROIDsein -
nextmussNULLoder ein gültiger Zeiger auf die nächste Struktur in einer Strukturkette sein.
Unterstützte globale Dimmstufen aufzählen
Die Struktur xrEnumerateSupportedGlobalDimmingLevelsANDROID ist so definiert:
XrResult xrEnumerateSupportedGlobalDimmingLevelsANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t supportedGlobalDimmingLevelCapacityInput,
uint32_t* supportedGlobalDimmingLevelCountOutput,
float* supportedGlobalDimmingLevels);
Mitgliederbeschreibungen
instanceist die Instanz, aus dersystemIdabgerufen wurde.systemIdist dieXrSystemId, deren unterstützte Stufen aufgezählt werden.supportedGlobalDimmingLevelCapacityInputist die Kapazität dessupportedGlobalDimmingLevels-Arrays oder 0, um eine Anfrage zum Abrufen der erforderlichen Kapazität anzugeben.supportedGlobalDimmingLevelCountOutputist ein Zeiger auf die Anzahl der geschriebenensupportedGlobalDimmingLevelsoder ein Zeiger auf die erforderliche Kapazität, fallssupportedGlobalDimmingLevelCapacityInputnicht ausreicht.supportedGlobalDimmingLevelsist ein Zeiger auf ein Array unterstützter Level, kann aber NULL sein, wennsupportedGlobalDimmingLevelCapacityInput0 ist.
Wenn der zurückgegebene supportedGlobalDimmingLevelCountOutput-Wert 0 ist, werden alle globalen Dimmstufen zwischen 0,0 und 1,0 unterstützt.
xrEnumerateSupportedGlobalDimmingLevelsANDROID listet die globalen Dimmstufen auf, die von XrSystemId unterstützt werden. Die unterstützten Ebenen dürfen sich während der Lebensdauer der XrInstance nicht ändern. Die zurückgegebene Liste der Ebenen muss in aufsteigender Reihenfolge sortiert sein.
Laufzeiten müssen für die angegebene systemId und für die Lebensdauer der instance immer identische Pufferinhalte aus dieser Aufzählung zurückgeben.
Gültige Verwendung (implizit)
- Die Erweiterung
XR_ANDROID_global_passthrough_dimmingmuss aktiviert sein, bevor xrEnumerateSupportedGlobalDimmingLevelsANDROID aufgerufen wird. -
instancemuss ein gültiges XrInstance-Handle sein -
supportedGlobalDimmingLevelCountOutputmuss ein Zeiger auf einenuint32_t-Wert sein - Wenn
supportedGlobalDimmingLevelCapacityInputnicht0ist, musssupportedGlobalDimmingLevelsein Zeiger auf ein Array vonsupportedGlobalDimmingLevelCapacityInput-float-Werten sein.
Rückgabecodes
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
Globales Dimmen konfigurieren
Die Struktur XrGlobalDimmingFrameEndInfoANDROID ist so definiert:
typedef struct XrGlobalDimmingFrameEndInfoANDROID {
XrStructureType type;
const void* next;
float globalDimmingLevel;
} XrGlobalDimmingFrameEndInfoANDROID;
Parameterbeschreibungen
typeist der XrStructureType dieser Struktur.nextistNULLoder ein Zeiger auf die nächste Struktur in einer Strukturkette. Solche Strukturen sind weder in OpenXR noch in dieser Erweiterung definiert.globalDimmingLevelist ein Wert zwischen 0,0 (transparent) und 1,0 (undurchsichtig). Die Laufzeit kann diesen Wert der nächstgelegenen unterstützten globalen Dimmstufe zuordnen. Die Anwendung kann diesen Wert auf -1,0 setzen, um anzugeben, dass die aktuelle Dimmstufe bevorzugt wird.
Der Wert globalDimmingLevel gibt den Prozentsatz des blockierten Lichts an, wobei ein Wert von 0,0 0 % und 1,0 100 % blockiertem Licht entspricht. Der Prozentsatz des blockierten Lichts kann im Allgemeinen so dargestellt werden:
100% - Light Transmittance%
Der Prozentsatz der Lichtdurchlässigkeit gemäß ISO 8980-3:2022 kann als Verhältnis des durchgelassenen Strahlungsflusses zum einfallenden Strahlungsfluss bei Wellenlängen des sichtbaren Lichts (380 nm bis 780 nm) gemessen werden.
XrGlobalDimmingFrameEndInfoANDROID ist eine Struktur, die eine Anwendung in XrFrameEndInfo verketten kann, um eine bevorzugte globale Dimmstufe anzufordern.
Die Laufzeit muss die angeforderte Dimmstufe berücksichtigen, wenn sie sich von der aktuellen Dimmstufe unterscheidet.
Die Laufzeit hat die Kontrolle über die globale Dimmstufe und kann die bevorzugte globale Dimmstufe aus Sicherheitsgründen ignorieren.
Gültige Verwendung (implizit)
- Die Erweiterung
XR_ANDROID_global_passthrough_dimmingmuss aktiviert sein, bevor XrGlobalDimmingFrameEndInfoANDROID verwendet werden kann. -
typemussXR_TYPE_GLOBAL_DIMMING_FRAME_END_INFO_ANDROIDsein -
nextmussNULLoder ein gültiger Zeiger auf die nächste Struktur in einer Strukturkette sein.
Die Funktion xrGetGlobalDimmingLevelANDROID ist so definiert:
XrResult xrGetGlobalDimmingLevelANDROID(
XrSession session,
float* dimmingLevel);
Parameterbeschreibungen
sessionist ein gültiges XrSession-Handle.dimmingLevelist ein Zeiger auf die aktuelle Dimmstufe.
Der zurückgegebene dimmingLevel-Wert muss zwischen 0,0 und 1,0 liegen, wobei 0,0 für vollständig transparent und 1,0 für vollständig gedimmt steht.
Wenn die Dimmstufe nicht festgelegt wurde, muss die Laufzeit die Dimmstufe auf 0,0 setzen, wenn Passthrough aktiviert ist, und auf 1,0, wenn Passthrough deaktiviert ist.
Gültige Verwendung (implizit)
- Die Erweiterung
XR_ANDROID_global_passthrough_dimmingmuss aktiviert sein, bevor xrGetGlobalDimmingLevelANDROID aufgerufen wird. -
sessionmuss ein gültiges XrSession-Handle sein -
dimmingLevelmuss ein Zeiger auf einenfloat-Wert sein
Rückgabecodes
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
Ereignis „Dimmstufe geändert“
Die Struktur XrEventDataGlobalDimmingLevelChangedANDROID ist so definiert:
typedef struct XrEventDataGlobalDimmingLevelChangedANDROID {
XrStructureType type;
const void* next;
XrSession session;
} XrEventDataGlobalDimmingLevelChangedANDROID;
Mitgliederbeschreibungen
typeist der XrStructureType dieser Struktur.nextistNULLoder ein Zeiger auf die nächste Struktur in einer Strukturkette. Solche Strukturen sind weder in OpenXR noch in dieser Erweiterung definiert.sessionist ein gültiges XrSession-Handle.
Die Anwendung kann dieses Ereignis mit xrPollEvent abrufen. Dieses Ereignis wird gesendet, wenn die Helligkeitsstufe entweder durch Apps oder durch physische Tasten auf Geräten geändert wird.
Dieses Ereignis wird nicht gesendet, wenn die App im Vordergrund zu einer anderen wechselt.
Die Anwendung sollte auf das Ereignis reagieren, indem sie xrGetGlobalDimmingLevelANDROID aufruft, um die neue Dimmstufe abzurufen und XrGlobalDimmingFrameEndInfoANDROID :: globalDimmingLevel entsprechend zu aktualisieren. Wenn Sie auf das Ereignis reagieren, wird die Laufzeitumgebung benachrichtigt, wenn die Anwendung die bevorzugte Dimmstufe ändert.
Gültige Verwendung (implizit)
- Die Erweiterung
XR_ANDROID_global_passthrough_dimmingmuss aktiviert sein, bevor XrEventDataGlobalDimmingLevelChangedANDROID verwendet werden kann. -
typemussXR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROIDsein -
nextmussNULLoder ein gültiger Zeiger auf die nächste Struktur in einer Strukturkette sein.
Beispielcode
Systemkapazität prüfen und unterstützte globale Dimmstufen auflisten
Der folgende Beispielcode zeigt, wie Sie prüfen, ob globales Dimmen unterstützt wird.
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()));
Ereignis „Dimmstufe geändert“ abfragen
Der folgende Beispielcode zeigt, wie das Ereignis „Dimmstufe geändert“ abgefragt wird.
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()
}
}
Neue Befehle
Neue Gebäude
- XrEventDataGlobalDimmingLevelChangedANDROID
Erweiterung von XrFrameEndInfo :
Erweiterung von XrSystemProperties :
Neue Enum-Konstanten
XR_ANDROID_GLOBAL_PASSTHROUGH_DIMMING_EXTENSION_NAMEXR_ANDROID_global_passthrough_dimming_SPEC_VERSIONErweiterung von XrStructureType :
XR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROIDXR_TYPE_GLOBAL_DIMMING_FRAME_END_INFO_ANDROIDXR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROID
Probleme
Versionsverlauf
Version 1, 07.10.2025 (Brian Chen)
- Erste Beschreibung der Erweiterung.