Если коротко:

Расширение OpenXR добавляет новую возможность или тип данных поверх базовой спецификации, а API Layer перехватывает вызовы между приложением и runtime для проверки или вспомогательной обработки. Приложение сначала перечисляет поддержку и включает только доступные расширения.

Базовый OpenXR задаёт общий набор функций, но оборудование развивается быстрее основной спецификации. Расширения позволяют добавить eye tracking, пространственные сущности или особенности конкретного производителя без немедленного изменения ядра стандарта.

Как работают расширения

Runtime публикует список поддерживаемых extension names. Приложение сравнивает его со своими требованиями и указывает нужные расширения при создании instance. После этого оно получает дополнительные функции и структуры по правилам спецификации.

Наличие названия ещё не означает, что функция доступна в любом состоянии. Могут потребоваться разрешение пользователя, определённое устройство или успешное создание сессии.

Расширения с префиксом производителя часто появляются раньше общего решения. Позже похожая возможность может стать EXT или частью новой версии ядра. Код должен различать варианты, а не считать их взаимозаменяемыми.

Что такое API Layer

API Layer находится между приложением и loader/runtime и может перехватывать вызовы. Типичный пример — слой валидации, который сообщает о нарушениях спецификации. Он полезен при разработке, но не должен быть обязательной скрытой зависимостью релиза.

Loader обнаруживает доступные слои и runtime по определённым правилам. Ошибка конфигурации может привести к тому, что приложение использует не тот runtime или не находит слой.

Безопасная стратегия поддержки

Разделите расширения на обязательные и дополнительные. Если критическая функция отсутствует, покажите понятное сообщение до входа в сценарий. Для необязательной — отключите только соответствующий элемент, сохранив базовую работу.

Логируйте имя runtime, версию OpenXR и активные расширения. Эти сведения помогают воспроизводить ошибки на другом устройстве.

Проверка

Тестируйте конфигурацию с включённой валидацией и без неё, а также на runtime разных производителей. Не вызывайте функции расширения, которое не было успешно включено. Следите за временем жизни структур в цепочках next.

Расширения сохраняют темп развития OpenXR, а API Layers помогают наблюдать за вызовами. Надёжность появляется только при явном обнаружении возможностей и корректном запасном пути.

Поделиться:TelegramВКонтакте

Источники

  1. Khronos — OpenXR Specification
  2. KhronosGroup — OpenXR Loader Design