OpenXR™Loader-设计和操作
介绍
本文档包含了解如何为OpenXR加载程序进行开发以及与之交互的必要信息。本文档的预期用途是作为详细的设计文档和学习一般OpenXR加载程序行为的工具。
如果本文档与OpenXR规范之间存在任何差异,则以该文档为准。
OpenXR™和OpenXR标志是Khronos Group股份有限公司所有的商标,在中国、欧盟、日本和英国注册为商标。OpenGL和OpenGL ES是Hewlett-Packard Enterprise的注册商标,均由Khronos授权使用。所有其他产品名称、商标和/或公司名称仅用于识别,属于其各自的所有者。
1.术语
本文档中的关键字“必须”、“可以”、“不能”、“应该”、“必需”、“推荐”和“可选”应按照RFC 2119中的描述进行解释。
2.概述
OpenXR是一个分层体系结构,由以下元素组成:
OpenXR应用程序
OpenXR加载程序
OpenXR API层
OpenXR运行时间
本文档中的一般概念适用于可用于基于Windows和Linux的系统的加载程序。
首先,让我们把OpenXR环境看作一个整体。OpenXR应用程序位于执行链的起点,并直接与OpenXR加载程序接口。加载程序反过来检测、加载任意数量的OpenXR运行时和API层,并与之交互。每个OpenXR运行时都控制一个完整的VR/XR/MR系统,应用程序可以选择与之交互。加载器可以在应用程序和运行时之间注入任意数量的可选API层以增强行为。因此,任何OpenXR命令都可能涉及在许多不同的模块中执行代码,包括加载器、API层和运行时。
图1. OpenXR加载程序的高级视图
图2:示例调用链
加载器仅允许单个未完成的XrInstance,并将为所有OpenXR API命令的该XrInstance生成的调度表使用。
图3. 标准调用链
“特殊实例”调用链用于多个地方,在这些地方,加载器必须在任何API层之前和之后,但在调用启用的运行时之前执行一些工作。xrCreateInstance、xrDestroyInstance和xrGetInstanceProcAddr是属于此组的三个主要命令。大多数命令不需要终止符,而是使用第二个调用链。
图4. 应用程序调度的调用链
图5. 加载API层排序
图6. 可选功能示例
图7.加载类图
参考文献链接
https://registry.khronos.org/OpenXR/specs/1.0/loader.html