Name String

XR_ANDROID_recommended_resolution

Тип расширения

Расширение экземпляра

Зарегистрированный добавочный номер

462

Revision

1

Статус ратификации

Не ратифицировано

Зависимости расширений и версий

OpenXR 1.0

Статус IP-адреса

Нет известных претензий в отношении интеллектуальной собственности.

Авторы

Тревор Дебрехтабель (Trevor Debrechtabel), Google
Спенсер Куин (Spencer Quin), Google
Лаклан Форд (Lachlan Ford), Google
Василий Баранов, Google

Обзор

Это расширение позволяет среде выполнения уведомлять приложение об изменении рекомендуемого разрешения на основе текущей производительности системы, температуры устройства или других факторов.

Это расширение изменяет спецификацию следующим образом:

  • Среда выполнения может возвращать неодинаковое содержимое буфера из перечисления xrEnumerateViewConfigurationViews для заданных systemId и viewConfigurationType в течение времени существования экземпляра.

Структура XrEventDataRecommendedResolutionChangedANDROID определяется следующим образом:

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

Описания участников

  • type – это XrStructureType этой структуры.
  • next – это NULL или указатель на следующую структуру в цепочке. Такие структуры не определены в ядре OpenXR или этом расширении.

Получение структуры события XrEventDataRecommendedResolutionChangedANDROID указывает на то, что рекомендуемое разрешение изменилось. Приложение должно запросить у среды выполнения новое рекомендуемое разрешение с помощью xrEnumerateViewConfigurationViews .

Допустимое использование (неявное)

Пример кода

В примере кода ниже показано, как прослушивать события изменения рекомендуемого разрешения.

// 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;
  }
}

История версий

  • Версия 1, 4 апреля 2025 г. (Кенни Веркамер)

    • Описание расширения