XR_ANDROID_recommended_settings
String de nome
XR_ANDROID_recommended_settings
Tipo de extensão
Extensão de instância
Número de ramal registrado
455
Revisão
1
Status de ratificação
Não ratificado
Dependências de extensão e versão
Data da última modificação
2026-03-16
Colaboradores
Spencer Quin, Google
Jared Finder, Google
Kevin Moule, Google
Nihav Jain, Google
Levana Chen, Google
Alvin Shi, Google
Salar Khan, Google
Visão geral
O ambiente padrão do usuário pode estar em vários estados usando uma combinação de um modo de mesclagem e uma modalidade de entrada. Essa extensão fornece as configurações recomendadas para o usuário, que correspondem ao estado do ambiente padrão do usuário antes do lançamento do aplicativo, para garantir uma transição tranquila.
Structs e enums
Os bits XrInputModalityFlagsANDROID identificam diferentes modalidades de entrada que podem estar em uso.
typedef XrFlags64 XrInputModalityFlagsANDROID;
Os bits válidos para XrInputModalityFlagsANDROID são definidos por XrInputModalityFlagBitsANDROID , que é especificado como:
// 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;
Descrições de flags
XR_INPUT_MODALITY_HEAD_BIT_ANDROID: indica uma modalidade de entrada que usa o rastreamento da cabeça.XR_INPUT_MODALITY_CONTROLLER_BIT_ANDROID: indica uma modalidade de entrada que está usando qualquer entrada do controlador XR.XR_INPUT_MODALITY_HANDS_BIT_ANDROID: indica uma modalidade de entrada que usa a captura de movimentos das mãos.XR_INPUT_MODALITY_MOUSE_BIT_ANDROID: indica uma modalidade de entrada que está usando entradas do mouse.XR_INPUT_MODALITY_GAZE_AND_GESTURE_BIT_ANDROID: indica uma modalidade de entrada que combina o acompanhamento ocular e a captura de movimentos das mãos.
A estrutura XrRecommendedSettingsANDROID é definida como:
typedef struct XrRecommendedSettingsANDROID {
XrStructureType type;
void* next;
XrEnvironmentBlendMode blendMode;
float passthroughOpacity;
XrInputModalityFlagsANDROID activeInputModalities;
} XrRecommendedSettingsANDROID;
Descrições dos membros
typeé o XrStructureType dessa estrutura.nextéNULLou um ponteiro para a próxima estrutura em uma cadeia de estruturas. Nenhuma estrutura desse tipo é definida no OpenXR principal ou nesta extensão.blendModeé um XrEnvironmentBlendMode que indica o modo de mesclagem do ambiente padrão antes do lançamento do aplicativo.passthroughOpacityé umfloatque indica a opacidade de passagem do ambiente padrão logo antes do lançamento do aplicativo. O ambiente de execução precisa definir esse valor como (1.0 - dimming_value) para dispositivos OST.activeInputModalitiesé uma máscara de bits de XrInputModalityFlagsANDROID que indica as modalidades de entrada em uso no ambiente padrão logo antes do lançamento do aplicativo.
Uso válido (implícito)
- A extensão
XR_ANDROID_recommended_settingsprecisa ser ativada antes de usar XrRecommendedSettingsANDROID. -
typeprecisa serXR_TYPE_RECOMMENDED_SETTINGS_ANDROID -
nextprecisa serNULLou um ponteiro válido para a próxima estrutura em uma cadeia de estruturas -
blendModeprecisa ser um valor XrEnvironmentBlendMode válido -
activeInputModalitiesprecisa ser uma combinação válida de valores XrInputModalityFlagBitsANDROID -
activeInputModalitiesnão pode ser0
Como enumerar estados de ambiente compatíveis
Um aplicativo pode determinar quais estados de modo de combinação e modalidade de entrada são compatíveis com o sistema usando xrEnumerateEnvironmentBlendModes e estendendo as XrSystemProperties com a estrutura XrSystemInputModalityPropertiesANDROID ao chamar xrGetSystemProperties .
A estrutura XrSystemInputModalityPropertiesANDROID é definida como:
typedef struct XrSystemInputModalityPropertiesANDROID {
XrStructureType type;
void* next;
XrInputModalityFlagsANDROID supportedInputModalities;
} XrSystemInputModalityPropertiesANDROID;
Descrições dos membros
typeé o XrStructureType dessa estrutura.nextéNULLou um ponteiro para a próxima estrutura em uma cadeia de estruturas. Nenhuma estrutura desse tipo é definida no OpenXR principal ou nesta extensão.supportedInputModalitiesé um ou mais XrInputModalityFlagsANDROID que indicam as modalidades de entrada compatíveis com o sistema.
Uso válido (implícito)
- A extensão
XR_ANDROID_recommended_settingsprecisa ser ativada antes de usar XrSystemInputModalityPropertiesANDROID. -
typeprecisa serXR_TYPE_SYSTEM_INPUT_MODALITY_PROPERTIES_ANDROID -
nextprecisa serNULLou um ponteiro válido para a próxima estrutura em uma cadeia de estruturas
Receber as configurações recomendadas (estado padrão do ambiente antes do lançamento)
XrResult xrGetRecommendedSettingsANDROID(
XrInstance instance,
XrSystemId systemId,
XrRecommendedSettingsANDROID* output);
Descrições dos parâmetros
instanceé um identificador XrInstance criado anteriormente com xrCreateInstance .systemIdé umXrSystemIdbuscado anteriormente em xrGetSystem .outputé um ponteiro para uma struct XrRecommendedSettingsANDROID que é gerada com o estado de ambiente padrão.
Uso válido (implícito)
- A extensão
XR_ANDROID_recommended_settingsprecisa ser ativada antes de chamar xrGetRecommendedSettingsANDROID. -
instanceprecisa ser um identificador XrInstance válido -
outputprecisa ser um ponteiro para uma estrutura XrRecommendedSettingsANDROID.
Códigos de retorno
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SYSTEM_INVALID
Exemplo de código para as configurações recomendadas
O exemplo de código a seguir demonstra como receber as modalidades de entrada compatíveis, receber as configurações recomendadas e confirmar se as configurações informadas são compatíveis com o 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);
}
Novos comandos
Novas estruturas
Novos tipos enumerados
Novas máscaras de bits
Novas constantes de tipo enumerado
XR_ANDROID_RECOMMENDED_SETTINGS_EXTENSION_NAMEXR_ANDROID_recommended_settings_SPEC_VERSIONEstendendo XrStructureType :
XR_TYPE_RECOMMENDED_SETTINGS_ANDROIDXR_TYPE_SYSTEM_INPUT_MODALITY_PROPERTIES_ANDROID
Problemas
Histórico de versões
Revisão 3, 16/03/2026 (Salar Khan)
- Promovido para público, transformou as modalidades de entrada em bits de flag e mudou o nome da extensão para
XR_ANDROID_recommended_settings.
- Promovido para público, transformou as modalidades de entrada em bits de flag e mudou o nome da extensão para
Revisão 2, 28/03/2025 (Salar Khan)
- Mudança para ANDROIDX e inclusão de passthroughOpacity.
Revisão 1, 18/02/2025 (Salar Khan)
- Versão inicial.