使用受支持的 OpenXR 扩展构建

适用的 XR 设备
本指南可帮助您为以下类型的 XR 设备打造优质体验。
扩展现实头戴设备
有线扩展现实眼镜

Android XR 通过 OpenXR 1.1 规范和众多第三方供应商扩展程序支持 OpenXR。使用这些扩展程序,您可以在开发 XR 应用时获得熟悉的体验。其中一些功能需要 Android 运行时权限。如果您希望直接基于 OpenXR API 进行构建,可以在 jetpack-xr-natives 代码库中找到所需的头文件。

Android XR 供应商扩展程序

扩展程序名称

说明

Spatial API 版本

XR_ANDROID_anchor_sharing_export

应用通过 XR_ANDROID_trackables、XR_EXT_spatial_anchor 和 XR_ANDROID_spatial_anchor_space 创建的锚点会绑定到特定会话,因此对其他应用不可见。此扩展程序能让你的应用与其他正在运行的应用共享锚点。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_body_tracking

使用 IK 根据头部和手部位置确定身体位置。

权限: BODY_TRACKING

v2

XR_ANDROID_composition_layer_passthrough_mesh

适用于支持多种环境混合模式的设备。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_depth_texture

此扩展程序能让你的应用请求头显周围真实环境的深度图,并在创建时查询支持的深度分辨率。

权限: SCENE_UNDERSTANDING_FINE

v1

XR_ANDROID_device_anchor_persistence

此扩展程序允许应用持久保存。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_enumerate_system_extension_properties

此扩展程序可让应用确定当前系统配置支持哪些扩展程序。

v3

XR_ANDROID_eye_tracking

此扩展程序使应用能够获取用户眼睛的位置和方向,以及眼动追踪状态。

权限: EYE_TRACKING_FINE

v1

XR_ANDROID_face_tracking

此扩展程序使应用能够获取混合形状的权重,并在 XR 体验中渲染面部表情。

权限: FACE_TRACKING

v1

XR_ANDROID_face_tracking_data_source

此扩展程序使应用能够从多个数据源获取面部追踪数据。

权限:FACE_TRACKING、RECORD_AUDIO

v3

XR_ANDROID_geospatial

此扩展程序为 Google 的 Geospatial API 提供地理空间跟踪功能。

权限: ACCESS_FINE_LOCATION

v4

XR_ANDROID_geospatial_anchor

此扩展程序提供地理空间锚点和表面锚点,这些锚点在空间中相对于地球定位在给定的纬度、经度和海拔高度。

权限: ACCESS_FINE_LOCATION

v4

XR_ANDROID_global_passthrough_dimming

此扩展程序允许应用设置和查询全局透视调光级别,并在调光级别发生变化时接收事件。

v4

XR_ANDROID_google_cloud_auth

此扩展程序允许应用为 Google Cloud API 提供身份验证凭据,从而支持使用基于 Google Cloud 的扩展程序。

v4

XR_ANDROID_hand_mesh

此扩展程序支持以动态手部网格表示的手部追踪输入。

权限: HAND_TRACKING

v1

XR_ANDROID_light_estimation

此扩展程序允许应用请求获取代表头戴设备周围真实环境光照的数据。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_light_estimation_cubemap

此扩展程序基于基本的 XR_ANDROID_light_estimation 扩展程序。

权限: SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_mouse_interaction

此扩展程序提供了一个用于获取鼠标输入的 XrPath,并为用户鼠标配置文件(包括鼠标设备和触控板设备)定义了一个常用操作姿势。

v1

XR_ANDROID_passthrough_camera_state

透视摄像头可能需要一些时间才能启动,并且可能无法立即使用。

v1

XR_ANDROID_performance_metrics

此扩展程序提供了 API,用于枚举和查询当前 XR 设备的各种性能指标计数器。

v1

XR_ANDROID_raycast

此扩展程序能让你的应用对环境中的可跟踪对象执行光线投射。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_recommended_resolution

此扩展程序允许运行时在建议的分辨率发生变化时通知应用。

v1

XR_ANDROID_recommended_settings

用户的默认环境可以:通过混合模式和输入模态的组合,呈现多种状态。

v1

XR_ANDROID_scene_meshing

此扩展程序旨在提供大致代表用户环境中物理对象的网格。

权限: SCENE_UNDERSTANDING_FINE

v1

XR_ANDROID_spatial_anchor_space

XR_EXT_spatial_anchor 扩展中定义的 xrCreateSpatialAnchorEXT 函数允许应用创建空间锚点,并使用 XrSpatialEntityEXT 句柄来表示该锚点。

相比之下,此扩展程序会创建由 XrSpace 句柄表示的空间锚点。

权限: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_annotation_tracking

此扩展程序为 XR_EXT_spatial_entity 扩展程序提供注释跟踪功能,以便跟踪场景中的各种注释。它使应用能够在由运行时引用定义的物理或虚拟对象上放置叠加层。

权限: SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_spatial_component_subsumed_by

此扩展基于 XR_EXT_spatial_entity 构建,并为 XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT 提供了一个新组件,用于公开包含当前实体的 XrSpatialEntityIdEXT。

权限: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_discovery_bounds

此扩展程序添加了空间边界的定义,使应用能够过滤发现的空间实体。

权限: SCENE_UNDERSTANDING_COARSE

v4

XR_ANDROID_spatial_discovery_raycast

此扩展程序基于 XR_EXT_spatial_entity 构建,可为现有空间功能提供光线投射功能。

权限: SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_spatial_entity_bound_anchor

此扩展程序能让你的应用创建锚点并将其附着到空间实体上。

权限: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_object_tracking

此扩展程序基于 XR_EXT_spatial_entity 构建,定义了一种空间功能,用于跟踪一组预定义的物理对象,而无需应用提供输入数据集。

权限: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_trackables

此扩展程序能让你的应用访问物理环境中的可跟踪对象。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_image

此扩展程序可跟踪由一组输入参考图片指定的平面图片。

权限: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_trackables_marker

此扩展程序可实现物理标记跟踪。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_object

此扩展程序可实现物理对象跟踪。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_qr_code

此扩展程序可实现实体二维码跟踪和二维码数据解码。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_unbounded_reference_space

此扩展程序能让你的应用创建 XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID 参考空间。

v1

XR_ANDROID_viewport_feathering

此扩展程序会公开运行时应用的羽化区域,以便应用在安全区域内布局界面元素。

v4

第三方扩展程序

扩展程序名称

说明

Spatial API 版本

XR_MND_headless

某些应用可能需要访问 XR 互动设备,而无需在显示屏上呈现任何图片内容。

v1

XR_KHR_binding_modification

此扩展程序添加了一个可选结构,该结构可包含在传递给 xrSuggestInteractionProfileBindings 的 XrInteractionProfileSuggestedBinding::next 链中,用于指定额外信息以修改默认绑定行为。

v1

XR_EXT_debug_utils

由于 OpenXR 接口的性质,开发者和应用可获得的错误信息非常少。

v1

XR_EXT_hand_tracking

此扩展程序能让应用定位手部追踪输入的各个关节。

权限: HAND_TRACKING

v1

XR_EXT_performance_settings

此扩展定义了一个 API,供应用向运行时提供性能提示,以及供运行时向应用发送与性能相关的通知。 这样,双方就可以在所需的 CPU 和 GPU 性能、热可持续性以及整个会话期间一致的良好用户体验之间进行适当的折衷。

v1

XR_FB_display_refresh_rate

在支持动态调整显示刷新率的平台上。

v1

XR_FB_swapchain_update_state

此扩展程序能让你的应用修改和查询与交换链关联的特定可变状态。

v1

XR_FB_foveation

XR 场景中的注视点渲染是一种渲染技术,可让图像中靠近焦点或眼睛中央凹的区域以高于外围区域的分辨率显示。

v1

XR_FB_foveation_configuration

在 Facebook HMD 上,开发者可以创建由运行时生成的注视点渲染配置文件,以实现光学特性和性能。

v1

XR_FB_foveation_vulkan

Vulkan 图形 API 需要将图片应用于交换链,才能应用注视点渲染模式。

v1

XR_FB_space_warp

此扩展程序可为在应用中启用空间扭曲技术提供支持。

v1

XR_KHR_opengl_es_enable

此扩展必须由支持应用使用 OpenGL ES API 进行渲染的运行时提供。

v1

XR_KHR_android_create_instance

当应用在 Android 系统上创建 XrInstance 对象时。

v1

XR_KHR_android_surface_swapchain

XR 中的一项常见活动是查看图片流。

v1

XR_KHR_android_thread_settings

为了让 XR 体验舒适,应用必须快速且稳定地提供帧。

v1

XR_KHR_composition_layer_color_scale_bias

在合成期间,在将图层颜色转换为预乘 Alpha 表示法后,系统会将颜色比例和偏差应用于图层颜色。

v1

XR_KHR_composition_layer_cube

此扩展程序添加了一个额外的层类型,可直接从立方体贴图进行采样。

v1

XR_KHR_composition_layer_cylinder

此扩展程序添加了一种额外的图层类型,其中 XR 运行时必须将源自交换链的纹理映射到圆柱体部分的内部。您可以将其想象成曲面电视屏幕在观看者眼中的样子。

v1

XR_KHR_composition_layer_depth

此扩展程序定义了一种额外的图层类型,允许应用在投影图层中提交深度图像和彩色图像。

v1

XR_KHR_composition_layer_equirect

此扩展程序添加了一个额外的图层类型,其中 XR 运行时必须将源自交换链的等距柱状投影编码图片映射到球体内部。

v1

XR_KHR_composition_layer_equirect2

此扩展程序添加了一个额外的图层类型,其中 XR 运行时必须将源自交换链的等距柱状投影编码图片映射到球体内部。

此扩展程序使用不同的参数化,更符合 XR_KHR_composition_layer_cylinder 的公式,但在功能上等同于 XR_KHR_composition_layer_equirect。

v1

XR_KHR_convert_timespec_time

此扩展程序提供了两个函数,用于在 timespec 单调时间和 XrTime 之间进行转换。

v1

XR_KHR_vulkan_enable

此扩展程序支持在 OpenXR 运行时中使用 Vulkan 图形 API。

v1

XR_KHR_vulkan_enable2

此扩展程序支持在 OpenXR 运行时中使用 Vulkan 图形 API。

v1

XR_KHR_loader_init

在某些平台上,必须先使用平台专用参数初始化加载器,然后才能进行加载。

v1

XR_KHR_loader_init_android

在 Android 上,某些加载器实现需要应用在初始化时提供额外信息。

v1

XR_KHR_swapchain_usage_input_attachment_bit

此扩展程序使应用能够指定应以某种方式创建交换链映像,以便将其用作输入附件。在撰写本文时,此位仅影响 Vulkan 交换链。

v1

XR_EXT_dpad_binding

此扩展程序允许应用通过定义额外的组件路径来建议绑定,从而将一个或多个数字操作绑定到触控板或摇杆,就像它们是方向键一样。

v1

XR_EXT_uuid

此扩展程序定义了遵循 RFC 4122 的通用唯一标识符。

v1

XR_FB_composition_layer_depth_test

此扩展程序支持经过深度测试的图层合成。

v1

XR_EXT_eye_gaze_interaction

此扩展程序提供了一个 XrPath,用于从眼动追踪器获取眼动注视输入,以实现眼动注视互动。

权限: EYE_TRACKING_FINE

v1

XR_EXT_hand_interaction

此扩展程序为所有用户手部互动配置文件(包括手部追踪设备和动作控制器设备)定义了四种常用的动作姿势。

v1

XR_KHR_visibility_mask

此扩展程序支持为应用提供按视图绘制的遮罩。

v1

XR_META_foveation_eye_tracked

眼动追踪注视点渲染会在用户视线边缘渲染较低的像素密度。

权限: EYE_TRACKING_FINE

v1

XR_FB_hand_tracking_aim

XR_EXT_hand_tracking 扩展程序提供了一系列手部关节姿势,这些姿势代表了被追踪手部的当前配置。此扩展程序添加了系统使用的手势识别层。

权限: HAND_TRACKING

v1

XR_EXT_palm_pose

此扩展程序为交互配置文件定义了一个新的“标准姿势标识符”,名为“palm_ext”。

v1

XR_VARJO_foveated_rendering

Varjo 头戴式设备在显示屏的中心区域提供极高的像素密度。

权限: EYE_TRACKING_FINE

v1

XR_VARJO_quad_views

此扩展程序向 XrViewConfigurationType 添加了新的视图配置类型 XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO,该类型可由 xrEnumerateViewConfigurations 返回,以指示运行时支持 4 个视口。

v1

XR_META_vulkan_swapchain_create_info

借助此扩展程序,基于 Vulkan 的应用可以在调用 xrCreateSwapchain 时,通过将 XrVulkanSwapchainCreateInfoMETA 结构链接到 XrSwapchainCreateInfo 来传递额外的 VkImageCreateFlags 或 VkImageUsageFlags。

v1

XR_FB_hand_tracking_mesh

XR_EXT_hand_tracking 扩展程序提供手部关节姿势列表,但没有渲染蒙皮手部网格的机制。

权限: HAND_TRACKING

v1

XR_FB_composition_layer_image_layout

此扩展程序未定义新的合成层类型。

v1

XR_KHR_maintenance1

XR_KHR_maintenance1 添加了一系列次要功能,这些功能在最初的 OpenXR 1.0 版本中被有意忽略或遗漏。

v1

XR_FB_composition_layer_settings

此扩展程序允许应用请求在合成层上使用锐化或超采样等处理选项。

v1

XR_KHR_locate_spaces

此扩展程序引入了 xrLocateSpacesKHR 函数。

v1

XR_EXT_local_floor

核心 OpenXR 规范在 XrReferenceSpaceType 中包含两种世界锁定参考空间 XrSpace 类型。

v1

XR_EXT_spatial_marker_tracking

此扩展程序基于 XR_EXT_spatial_entity 构建,可让应用检测和跟踪其环境中的标记。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_persistence

此扩展程序能让应用在不同会话之间发现和关联空间实体。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_anchor

此扩展程序基于 XR_EXT_spatial_entity 构建,可让应用创建空间锚点。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_plane_tracking

此扩展程序基于 XR_EXT_spatial_entity 构建,为空间实体框架定义了平面跟踪空间功能。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_entity

此扩展程序介绍了 OpenXR 中场景理解和空间推理的概念和基础。

v1

XR_EXT_future

在 XR 系统中,某些操作运行时间较长,无法在正常帧循环内合理完成。

v1

XR_FB_color_space

XR 设备使用的色彩空间可能与开发中使用的许多显示器不同。

v1

XR_EXT_composition_layer_inverted_alpha

此扩展程序提供了一个标志,当应用于合成层时,该标志会反转层交换链图片中 Alpha 值的解释。

v1

XR_EXT_spatial_entity_archetypes

xrQuerySpatialComponentDataEXT 函数为应用提供了一种查询实体和组件数据的方法,该方法使用实体上必须存在的组件类型的过滤条件。此扩展程序引入了原型(唯一组件组合)的概念,以便应用可以读取所有实体的所有组件数据,而不会重复。

v4

XR_EXT_frame_synthesis

此扩展程序可根据应用提供的其他数据,在应用上启用帧合成。

v3

XR_QCOM_trackables_image_operations

为可跟踪对象提供 Qualcomm 图片跟踪操作。

v3

XR_QCOM_trackables_qr_code_operations

为可跟踪对象提供 Qualcomm 二维码跟踪操作。

v3

XR_EXT_user_presence

此扩展程序引入了一个新事件,用于在系统检测到用户状态发生变化时发出通知。

v3

XR_KHR_extended_struct_name_lengths

此扩展程序扩展了结构体名称的大小上限,并提供了一个新函数来访问这些新的扩展名称。

v3

XR_EXT_hand_tracking_data_source

此扩展程序是对 XR_EXT_hand_tracking 扩展程序的增强。

v4

XR_EXT_spatial_container_self_rendering

此扩展程序描述了空间容器上下文中的“自渲染”。

v4

XR_EXT_spatial_container

此扩展程序定义了一个新的可显示实体类。

v4

XR_EXT_spatial_persistence_operations

此扩展程序能让应用在不同会话间持久保存和取消持久保存空间实体。

权限: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_mesh_tracking

此扩展程序基于 XR_EXT_spatial_entity 构建,定义了用于跟踪环境三角形网格的空间功能。

权限: SCENE_UNDERSTANDING_COARSE

v4

XR_EXT_spatial_object_tracking

此扩展程序基于 XR_EXT_spatial_entity 构建,并定义了一项空间功能,用于跟踪一组预定义的对象,而无需应用提供输入数据集。

权限: SCENE_UNDERSTANDING_COARSE

v4

XR_EXT_spatial_image_tracking

此扩展程序为 XR_EXT_spatial_entity 扩展程序提供图片跟踪功能。

权限: SCENE_UNDERSTANDING_COARSE

v4

XR_EXT_interaction_profile_battery_state_display

XR_EXT_interaction_profile_battery_state_display 为应用提供了一种机制,用于向运行时查询与互动配置文件搭配使用的设备的电池状态信息。

v3

XR_FB_composition_layer_secure_content

此扩展程序未定义新的合成层类型。

v4


OpenXR™ 和 OpenXR 徽标是 The Khronos Group Inc. 拥有的商标,并在中国、欧盟、日本和英国注册为商标。