如何查询OpenXR运行时库的API版本?
查询OpenXR运行时API版本及版本兼容问题解决方案
一、如何查询运行时支持的OpenXR API版本
- 使用加载器的版本枚举函数(推荐)
如果你使用的是OpenXR 1.1及以上版本的加载器,可以直接调用xrEnumerateApiVersions,无需提前创建实例。这个函数会返回运行时支持的所有API版本范围:
每个返回的uint32_t versionCount = 0; xrEnumerateApiVersions(nullptr, &versionCount, nullptr); std::vector<XrApiVersion> supportedVersions(versionCount); xrEnumerateApiVersions(nullptr, &versionCount, supportedVersions.data());XrApiVersion包含运行时支持的最低和最高API版本,你可以从中确定兼容的版本号。 - 降级尝试创建实例(兼容旧版运行时)
若加载器不支持xrEnumerateApiVersions(比如运行时基于OpenXR 1.0),可以从最低兼容版本(如XR_VERSION_1_0)开始,逐步尝试调用xrCreateInstance,直到遇到XR_ERROR_API_VERSION_UNSUPPORTED,此时前一个成功的版本就是运行时支持的最高API版本。 - 系统工具直接查看
你提到的Windows Mixed Reality“OpenXR Tools”应用可以直接显示当前激活运行时的API版本,这是Windows平台下最直观的验证方式。
二、解决XR_ERROR_API_VERSION_UNSUPPORTED报错
你当前的核心问题是SDK更新到1.1.41,但目标运行时仅支持1.0.28版本,按以下方式处理:
- 指定运行时兼容的API版本
将XrInstanceCreateInfo::applicationInfo.apiVersion设置为XR_MAKE_VERSION(1, 0, 28)(即运行时支持的1.0.28版本),而非SDK的最新版本1.1.41。OpenXR允许高版本SDK连接低版本运行时,只要指定的API版本在运行时支持范围内。 - 避免使用apiVersion=0
OpenXR规范未定义apiVersion=0的行为,属于未操作,可能引发不可预期的问题,绝对不要依赖这个方案。 - 明确SDK与运行时版本的区别
SDK版本是你开发时使用的头文件和加载器版本,运行时API版本是平台/设备支持的OpenXR规范版本,两者无需完全一致,只要指定的apiVersion在运行时支持的范围内即可。
内容的提问来源于stack exchange,提问作者Theodore Hall
相关产品推荐
相关产品推荐

