String do nome

XR_ANDROID_recommended_resolution

Tipo de extensão

Extensão de instância

Número de 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

Status de IP

Nenhuma reivindicação de IP conhecida.

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 mudar, 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 ambiente de execução pode retornar conteúdos de buffer não idênticos da enumeração xrEnumerateViewConfigurationViews para o systemId e viewConfigurationType especificados 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 nessa extensão.

O recebimento da estrutura de eventos 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 = {
  .type = 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