You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为现有Android OpenGLES原生C++项目集成OpenXR?

在Android Studio中为C++引擎配置OpenXR的正确方案

方案一:使用官方Maven预编译库(推荐,无需编译源码)

  1. 保留app/build.gradle中的依赖:
implementation 'org.khronos.openxr:openxr_loader_for_android:1.1.41'
  1. 修改项目的CMakeLists.txt,添加以下配置(替换[你的项目名]为实际目标名称):
# 自动查找OpenXR Loader包(Android Studio会自动识别Maven中的依赖)
find_package(openxr_loader_for_android REQUIRED CONFIG)

# 为你的引擎目标添加头文件路径并链接库
target_include_directories([你的项目名] PRIVATE ${openxr_loader_for_android_INCLUDE_DIRS})
target_link_libraries([你的项目名] PRIVATE openxr_loader_for_android::openxr_loader)

如果find_package失效,可手动指定路径(可通过Android Studio的External Libraries找到openxr_loader_for_android,右键选择Show in Explorer查看本地缓存路径):

# 手动指定头文件路径
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../.gradle/caches/modules-2/files-2.1/org.khronos.openxr/openxr_loader_for_android/1.1.41/<本地缓存路径>/jni/include)

# 链接对应ABI的预编译库
target_link_libraries([你的项目名] PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../.gradle/caches/modules-2/files-2.1/org.khronos.openxr/openxr_loader_for_android/1.1.41/<本地缓存路径>/jni/${ANDROID_ABI}/libopenxr_loader.so)

方案二:源码编译OpenXR SDK

  1. 重新克隆完整的OpenXR SDK仓库(必须包含子模块,否则缺失核心代码):
git clone --recursive https://github.com/KhronosGroup/OpenXR-SDK.git lib/openxr
  1. 修改项目的CMakeLists.txt,添加以下配置:
# 添加OpenXR SDK子目录,指定编译参数(EXCLUDE_FROM_ALL避免编译所有示例)
add_subdirectory(
  lib/openxr
  lib/build/lib/android/openxr
  EXCLUDE_FROM_ALL
)

# 为你的引擎目标添加头文件路径
target_include_directories(
  [你的项目名]
  PRIVATE
  lib/openxr/include
  lib/openxr/src/include
)

# 链接核心OpenXR Loader库(注意不是openxr-gfxwrapper,那是示例工具库)
target_link_libraries([你的项目名] PRIVATE openxr_loader)
  1. 在app/build.gradle的defaultConfig中指定最低Android版本和ABI(OpenXR要求至少API 24):
android {
    defaultConfig {
        minSdkVersion 24
        externalNativeBuild {
            cmake {
                abiFilters 'arm64-v8a'
                arguments "-DANDROID_ABI=arm64-v8a", "-DANDROID_PLATFORM=android-24"
            }
        }
    }
}

关键注意事项

  • 头文件#include <openxr/openxr.h>等写法正确,只要CMake配置了正确的include路径,编译器就能找到。
  • 不要链接openxr-gfxwrapper,这是OpenXR示例中的辅助库,核心功能依赖的是openxr_loader。
  • 源码编译时必须克隆子模块,否则会缺失核心头文件和代码,导致CMake报错。

内容的提问来源于stack exchange,提问作者Johnathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:09:54