XR_ANDROID_recommended_settings
Name String
XR_ANDROID_recommended_settings
Tipo di estensione
Estensione dell'istanza
Numero di interno registrato
455
Revisione
1
Stato della ratifica
Non ratificato
Dipendenze di estensioni e versioni
Data ultima modifica
2026-03-16
Collaboratori
Spencer Quin, Google
Jared Finder, Google
Kevin Moule, Google
Nihav Jain, Google
Levana Chen, Google
Alvin Shi, Google
Salar Khan, Google
Panoramica
L'ambiente predefinito dell'utente può trovarsi in vari stati utilizzando una combinazione di modalità di fusione e modalità di input. Questa estensione fornisce le impostazioni consigliate per l'utente, che corrispondono allo stato dell'ambiente predefinito dell'utente prima del lancio dell'applicazione, per garantire una transizione senza problemi.
Struct ed enum
I bit XrInputModalityFlagsANDROID identificano diverse modalità di input che potrebbero essere in uso.
typedef XrFlags64 XrInputModalityFlagsANDROID;
I bit validi per XrInputModalityFlagsANDROID sono definiti da XrInputModalityFlagBitsANDROID , che viene specificato come:
// Flag bits for XrInputModalityFlagsANDROID
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_HEAD_BIT_ANDROID = 0x00000001;
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_CONTROLLER_BIT_ANDROID = 0x00000002;
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_HANDS_BIT_ANDROID = 0x00000004;
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_MOUSE_BIT_ANDROID = 0x00000008;
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_GAZE_AND_GESTURE_BIT_ANDROID = 0x00000010;
Descrizioni dei flag
XR_INPUT_MODALITY_HEAD_BIT_ANDROID: indica una modalità di input che utilizza il tracciamento della testa.XR_INPUT_MODALITY_CONTROLLER_BIT_ANDROID: indica una modalità di input che utilizza qualsiasi input del controller XR.XR_INPUT_MODALITY_HANDS_BIT_ANDROID: indica una modalità di input che utilizza il tracciamento delle mani.XR_INPUT_MODALITY_MOUSE_BIT_ANDROID: indica una modalità di input che utilizza gli input del mouse.XR_INPUT_MODALITY_GAZE_AND_GESTURE_BIT_ANDROID: indica una modalità di input che combina il tracciamento oculare e il tracciamento delle mani.
La struttura XrRecommendedSettingsANDROID è definita come:
typedef struct XrRecommendedSettingsANDROID {
XrStructureType type;
void* next;
XrEnvironmentBlendMode blendMode;
float passthroughOpacity;
XrInputModalityFlagsANDROID activeInputModalities;
} XrRecommendedSettingsANDROID;
Descrizioni dei membri
typeè l'XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture. Nessuna struttura di questo tipo è definita in OpenXR di base o in questa estensione.blendModeè un XrEnvironmentBlendMode che indica la modalità di fusione dell'ambiente predefinito appena prima del lancio dell'applicazione.passthroughOpacityè unfloatche indica l'opacità passthrough dell'ambiente predefinito appena prima del lancio dell'applicazione. Il runtime deve impostare questo valore su (1.0 - dimming_value) per i dispositivi OST.activeInputModalitiesè una maschera di bit di XrInputModalityFlagsANDROID che indica le modalità di input in uso nell'ambiente predefinito appena prima del lancio dell'applicazione.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_recommended_settingsdeve essere attivata prima di utilizzare XrRecommendedSettingsANDROID -
typedeve essereXR_TYPE_RECOMMENDED_SETTINGS_ANDROID -
nextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutture -
blendModedeve essere un valore XrEnvironmentBlendMode valido -
activeInputModalitiesdeve essere una combinazione valida di valori XrInputModalityFlagBitsANDROID -
activeInputModalitiesnon deve essere0
Enumerazione degli stati dell'ambiente supportati
Un'applicazione può determinare quali stati della modalità di fusione e della modalità di input sono supportati dal sistema con xrEnumerateEnvironmentBlendModes ed estendendo XrSystemProperties con la struttura XrSystemInputModalityPropertiesANDROID quando chiama xrGetSystemProperties .
La struttura XrSystemInputModalityPropertiesANDROID è definita come:
typedef struct XrSystemInputModalityPropertiesANDROID {
XrStructureType type;
void* next;
XrInputModalityFlagsANDROID supportedInputModalities;
} XrSystemInputModalityPropertiesANDROID;
Descrizioni dei membri
typeè l'XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture. Nessuna struttura di questo tipo è definita in OpenXR di base o in questa estensione.supportedInputModalitiesè uno o più XrInputModalityFlagsANDROID che indicano le modalità di input supportate dal sistema.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_recommended_settingsdeve essere abilitata prima di utilizzare XrSystemInputModalityPropertiesANDROID -
typedeve essereXR_TYPE_SYSTEM_INPUT_MODALITY_PROPERTIES_ANDROID -
nextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutture
Ottieni le impostazioni consigliate (stato dell'ambiente predefinito prima del lancio)
XrResult xrGetRecommendedSettingsANDROID(
XrInstance instance,
XrSystemId systemId,
XrRecommendedSettingsANDROID* output);
Descrizioni dei parametri
instanceè un handle XrInstance creato in precedenza con xrCreateInstance .systemIdè unXrSystemIdrecuperato in precedenza da xrGetSystem .outputè un puntatore a una struttura XrRecommendedSettingsANDROID che viene restituita con lo stato dell'ambiente predefinito.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_recommended_settingsdeve essere abilitata prima di chiamare xrGetRecommendedSettingsANDROID -
instancedeve essere un handle XrInstance valido -
outputdeve essere un puntatore a una struttura XrRecommendedSettingsANDROID
Codici di risposta
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SYSTEM_INVALID
Codice di esempio per le impostazioni consigliate
Il seguente codice di esempio mostra come ottenere le modalità di input supportate, ottenere le impostazioni consigliate e verificare che le impostazioni segnalate siano supportate dal sistema.
XrInstance instance; // Created at app startup
XrSystemId systemId; // previously initialized from xrGetSystem
XrViewConfigurationType viewType; // previously initialized to select desired view configuration
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrGetRecommendedSettingsANDROID xrGetRecommendedSettingsANDROID; // previously initialized
XrSystemInputModalityPropertiesANDROID props = {
.type = XR_TYPE_SYSTEM_INPUT_MODALITY_PROPERTIES_ANDROID
};
XrSystemProperties base = {
.type = XR_TYPE_SYSTEM_PROPERTIES,
.next = &props
};
CHK_XR(xrGetSystemProperties(instance, systemId, &base));
uint32_t blendModeCount = 0;
CHK_XR(
xrEnumerateEnvironmentBlendModes(instance, systemId, viewType, 0, &blendModeCount, nullptr));
std::vector<XrEnvironmentBlendMode> supportedBlendModes(blendModeCount);
CHK_XR(
xrEnumerateEnvironmentBlendModes(
instance, systemId, viewType, blendModeCount, &blendModeCount, supportedBlendModes.data()));
XrRecommendedSettingsANDROID output = {
.type = XR_TYPE_RECOMMENDED_SETTINGS_ANDROID
};
XrResult result = xrGetRecommendedSettingsANDROID(instance, systemId, &output);
if (result == XR_SUCCESS) {
// We now know the current state of the default environment as recommended settings
bool correctBlendMode = false;
for(XrEnvironmentBlendMode blendMode : supportedBlendModes) {
if (blendMode == output.blendMode) {
correctBlendMode = true;
break;
}
}
assert(correctBlendMode);
assert((~props.supportedInputModalities & output.activeInputModalities) == 0);
}
Nuovi comandi
Nuove strutture
- XrRecommendedSettingsANDROID
Estensione di XrSystemProperties :
Nuovi enum
Nuove maschere di bit
Nuove costanti enum
XR_ANDROID_RECOMMENDED_SETTINGS_EXTENSION_NAMEXR_ANDROID_recommended_settings_SPEC_VERSIONEstensione di XrStructureType :
XR_TYPE_RECOMMENDED_SETTINGS_ANDROIDXR_TYPE_SYSTEM_INPUT_MODALITY_PROPERTIES_ANDROID
Problemi
Cronologia delle versioni
Revisione 3, 16/03/2026 (Salar Khan)
- Promossa a pubblica, ha reso i bit dei flag delle modalità di input e ha cambiato il nome dell'estensione in
XR_ANDROID_recommended_settings.
- Promossa a pubblica, ha reso i bit dei flag delle modalità di input e ha cambiato il nome dell'estensione in
Revisione 2, 28 marzo 2025 (Salar Khan)
- Passaggio ad ANDROIDX e inclusione di passthroughOpacity.
Revisione 1, 18 febbraio 2025 (Salar Khan)
- Versione iniziale.