String de nome

XR_ANDROID_recommended_resolution

Tipo de extensão

Extensão de instância

Número da extensão registrada

462

Revisão

1

Status de ratificação

Não ratificado

Dependências de extensão e versão

OpenXR 1.0

Data da última modificação

Status do IP

Colaboradores

Trevor Debrechtabel, Google
Spencer Quin, Google
Lachlan Ford, Google
Vasiliy Baranov, Google

Visão geral

Essa extensão permite que o ambiente de execução notifique o aplicativo quando a resolução recomendada muda, com base no desempenho atual do sistema, nas temperaturas do dispositivo ou em outros fatores.

Essa extensão modifica a especificação da seguinte maneira:

  • O tempo de execução pode retornar conteúdo de buffer não idêntico da enumeração xrEnumerateViewConfigurationViews para os determinados systemId e viewConfigurationType durante o ciclo de vida da instância.

A estrutura XrEventDataRecommendedResolutionChangedANDROID é definida como:

typedef struct XrEventDataRecommendedResolutionChangedANDROID {
    XrStructureType    type;
    const void*        next;
} XrEventDataRecommendedResolutionChangedANDROID;

Descrições de membros

  • type é o XrStructureType dessa estrutura.
  • next é NULL ou um ponteiro para a próxima estrutura em uma cadeia de estruturas. Nenhuma dessas estruturas é definida no OpenXR principal ou nesta extensão.

Receber a estrutura de evento XrEventDataRecommendedResolutionChangedANDROID indica que a resolução recomendada mudou. O aplicativo precisa consultar o ambiente de execução para a nova resolução recomendada usando xrEnumerateViewConfigurationViews .

Uso válido (implícito)

Exemplo de código

O exemplo de código a seguir demonstra como detectar eventos de mudança de resolução recomendada.

// Created at app startup time.
XrInstance instance;
XrSystemId systemId; // Previously initialized.
uint32_t viewCountOutput; // Previously initialized.

// View configuration type the application uses.
XrViewConfigurationType viewConfigType;

// Poll events for recommended resolution changes.
XrEventDataBuffer event = {XR_TYPE_EVENT_DATA_BUFFER};
XrResult result = xrPollEvent(instance, &event);
if (result == XR_SUCCESS) {
  switch (event.type) {
    case XR_TYPE_EVENT_DATA_RECOMMENDED_RESOLUTION_CHANGED_ANDROID: {
        uint32_t viewCapacityInput = viewCountOutput;
        std::vector<XrViewConfigurationView> views(viewCapacityInput);
        result = xrEnumerateViewConfigurationViews(instance, systemId,
          viewConfigType, viewCapacityInput, &viewCountOutput, views.data());
        if(!XR_SUCCEEDED(result)) {
          // Handle error
        }

        // New recommended resolution is found in
        // views.recommendedImageRectWidth and views.recommendedImageRectHeight
        // Change the resolution for the viewConfigType
      break;
    }
    default:
      break;
  }
}

Histórico de versões

  • Revisão 1, 04/04/2025 (Kenny Vercaemer)

    • Descrição inicial da extensão