XR_ANDROID_recommended_resolution
Строка имени
XR_ANDROID_recommended_resolution
Тип расширения
Расширение экземпляра
Зарегистрированный добавочный номер
462
Пересмотр
1
Статус ратификации
Не ратифицировано
Зависимости расширений и версий
Дата последнего изменения
Статус IP
Авторы
Тревор Дебрехтабель, Google
Спенсер Куин, Google
Лахлан Форд, Google
Василий Баранов, Google
Обзор
Это расширение позволяет среде выполнения уведомлять приложение об изменении рекомендуемого разрешения в зависимости от текущей производительности системы, температурного режима устройства или других факторов.
Данное расширение вносит следующие изменения в спецификацию:
- В течение всего времени существования экземпляра среда выполнения может возвращать неидентичное содержимое буфера из перечисления xrEnumerateViewConfigurationViews для заданных
systemIdиviewConfigurationType.
Структура XrEventDataRecommendedResolutionChangedANDROID определяется следующим образом:
typedef struct XrEventDataRecommendedResolutionChangedANDROID {
XrStructureType type;
const void* next;
} XrEventDataRecommendedResolutionChangedANDROID;
Описание участников
-
type— это XrStructureType данной структуры. -
nextравноNULLили указателю на следующую структуру в цепочке структур. В ядре OpenXR и в этом расширении такие структуры не определены.
Получение структуры события XrEventDataRecommendedResolutionChangedANDROID указывает на изменение рекомендуемого разрешения. Приложение должно запросить у среды выполнения информацию о новом рекомендуемом разрешении, используя xrEnumerateViewConfigurationViews .
Допустимое использование (неявное)
- Расширение
XR_ANDROID_recommended_resolutionнеобходимо включить перед использованием XrEventDataRecommendedResolutionChangedANDROID. -
typeдолжен бытьXR_TYPE_EVENT_DATA_RECOMMENDED_RESOLUTION_CHANGED_ANDROID -
nextдолжно бытьNULLили допустимым указателем на следующую структуру в цепочке структур.
Пример кода
Приведенный ниже пример кода демонстрирует, как отслеживать события изменения рекомендуемого разрешения.
// 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;
}
}
История версий
Редакция 1, 04.04.2025 (Кенни Веркамер)
- Первоначальное описание расширения