教程参考自 https://kheresy.wordpress.com/2020/07/16/openxr-env-init/
# OpenXR API 介绍
OpenXR Loader 是中间部分,如果不牵扯到 绘制
的条件下,直接使用官方已经预建好的 OpenXR Loader 就可以了
https://github.com/KhronosGroup/OpenXR-SDK/releases 而 OpenXR 的 API 主要是参考 在开发整个 OpenXR 的程序的时候,在外部主要的流程大致上会是:
- 建立 XrInstance
的物件 - 取得 XrSystemId
确认可存取的 XR 系统 - 建立 XrSession
准备开始 XR 系统的操作 - 进入主循环 - 处理事件 - 绘图,显示 - 程序结束,释放 XrInstance
资源
# XrInstance
OpenXR 的 Instance 是对应系统当下的 OpenXR Runtime
让
应用程序
可以和
OpenXR runtime
进行沟通 而后面呼叫几乎所有的 OpenXR 函数的时候,也都需要给一个有效的 Instabce
才可以. instance 负责管理 OpenXR 的各种状态。在撰写 OpenXR程序
的时候,一定要先建立一个 XrInstance
的物件.
要建立一个 XrInstance
的时候,是要使用 xrCreateInstance()
这个函数,要先决定使用的 API Layer
和 Extension
# XrSystemId
OpenXR 的 System 在概念上,是对应到系统中的 整套硬件系统
,如果以一般的 VR 环境来说,就是包含了 头戴显示器
和 控制器
了.
由于 OpenXR 提供的是跨 AR/VR 的架构,所以系统被分为了两个 Form Factor
- XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY:頭戴式顯示器 - XR_FORM_FACTOR_HANDHELD_DISPLAY:手持式裝置(例如手機) 在要取透过既有的 OpenXR Instance 取得可用的 System 的时候,必须要指定使用哪一个类型。 之后则是要通过 XrSystemId
来做进一步的获取信息、并建立 XrSession
来进行绘制和主循环的控制.
# 程序编写
编写程序前,一定要先建立一个 XrInstance
的物件出来,而需要使用的函数,则是 XrCreateInstance()