当前位置: 首页 > news >正文

高通 OpenXR SDK 使用指南(2)

高通 OpenXR SDK 使用指南(2)

    • 1.5 OpenXR 生命周期

1.5 OpenXR 生命周期

下图是 OpenXR 框架生命周期的流转过程。
在这里插入图片描述

此图中描述了以下过程:

  1. 应用程序首先使用 xrEnumerateApiLayerProperties 查询 API 层和扩展属性。 API层可以是以下类型:
  • Validation – OpenXR API validation
  • Debug – Debug facility present
  • Tracing
  • Profiling layer
  1. 应用程序选择所需的 API 层并向 xrCreateInstance 提供详细信息(API 层计数和 API 层的名称)。
  2. 应用程序使用 xrEnumerateExtensionProperties 查询/枚举支持的扩展及其属性。
  3. 在获得计数和扩展名称后,应用程序决定使用哪个扩展并将这些详细信息传递给 xrCreateInstance。

下图显示了 API 层和扩展枚举。
在这里插入图片描述

  1. 接下来,应用程序决定使用哪个 API 和哪个扩展。 一旦应用程序决定了扩展,它就会使用 xrCreateInstance 来创建 XrInstance。

  2. 然后应用程序启用并初始化应用程序请求的全局 API 层和扩展。 XrInstance 是应用程序对 OpenXR 运行时的表示。 如果运行时支持,它可以创建多个 XrInstance。 xrCreateInstance 指定应用程序信息、API 层和扩展。

注意:必须在 xrCreateInstance 期间创建 SVR 服务客户端才能查询系统和查看属性。

下图显示了运行时的实例创建。
在这里插入图片描述

  1. 基于默认的运行时设置,适当的运行时由加载器加载。下图展示了应用层如何调用xrCreateInstance,xrCreateInstance又调用runtime的XrInstance,通过xrGetInstanceProperties查询实例的所有属性。
    在这里插入图片描述

  2. 接下来,运行时实例应用程序查询设备属性。 OpenXR 将物理设备分组为与逻辑系统相关的设备。 XrSystem(在运行时,xrGetSystem 的应用程序表示)表示应用程序选择使用的一组设备(例如,HMD 和控制器)。 XrSystem 可能有显示、输入、跟踪等。

  3. xrGetSystem 返回要使用的外形规格类型。 QVR 服务客户端通过 QVRServiceClient_GetVRMode 函数提供所有详细信息。 下图显示了获取系统属性的流程。
    在这里插入图片描述

目前定义了两种类型的外形规格 (XrFormFactors):

  • XR_FORM_FACTOR_HANDHELD_DISPLAY
  • XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY

还有两种类型的视图配置(XrViewConfigurations):

  • XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO
  • XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO

以下是外形规格和视图配置的示例组合。
在这里插入图片描述

获取系统详细信息后,以下 API 用于确定支持哪些视图配置:

  • xrEnumerateViewConfigurations()
  • xrGetViewConfigurationProperties()
  • xrEnumerateViewconfigurationViews()-返回视图的推荐和最大高度和宽度
  • xrEnumerateEnvironmentalBledModes()
  1. 接下来,设备创建合成器会话。 它使用 xrCreateSession 初始化并提交左右镜头的畸变网格,并进入 Idle 状态。

  2. 一旦状态更改为 XR_SESSION_STATE_READY,就可以使用 xrBeginSession() 调用会话。

  3. 创建会话后,下一步是等待帧暂停或恢复合成。 在调用结束会话之前,会话一直处于活动状态。 要结束会话(注销图层图像并结束会话),应用程序需要调用 xrEndSession()。

在一个会话中,姿势的获取、交换链的分配和释放、变形和显示更新在一个循环中发生,如下图所示。
在这里插入图片描述

相关文章:

  • middlebury立体匹配评估使用方法总结(三)——线上版教程
  • 软件产品登记前需要准备什么
  • 力扣刷题笔记day7(数组中重复的数字+在排序数组中查找数字+0~n-1中缺失的数字)
  • Windows下安装VTK8.2.0
  • 带你读AI论文丨针对文字识别的多模态半监督方法
  • Docker的常规操作使用
  • 多兴趣建模中兴趣向量多样性度量
  • Java中的序列化
  • 构建高性能内存队列:Disruptor
  • 仪表盘读数识别检测 Python+yolov5
  • Ubuntu: Docker安装与操作
  • 大数据基础平台搭建-(一)基础环境准备
  • HEVC学习之CTU划分
  • IHRM0728 项目参数化框架
  • java微信支付v3系列——2.微信支付基本配置
  • 【JavaEE】Servlet
  • Node基础——认识Node
  • TensorFlow和Keras应如何选择?
  • 【深度思考】如何优雅的校验参数?
  • 超1.58亿人将“血拼”,超级星期六购物节即将到来