名称字符串
XR_ANDROID_trackables
扩展程序类型
实例扩展程序
已注册的扩展程序编号
456
修订版本
1
扩展程序和版本依赖项
上次修改日期
2024-09-30
IP 状态
没有已知的 IP 权利主张。
贡献者
Spencer Quin,Google
Nihav Jain,Google
John Pursey,Google
Jared Finder,Google
Levana Chen,Google
Kenny Vercaemer,Google
概览
此扩展程序能让你的应用访问物理环境中的可跟踪对象,并创建附着其上的锚点。
此扩展程序定义了平面可跟踪对象。其他扩展程序可能会添加其他可跟踪对象类型。例如,XR_ANDROID_trackables_object 添加了物体可跟踪对象,而 XR_ANDROID_depth_texture 则添加了深度缓冲区,支持向环境中的任意点进行光线投射。
可跟踪对象是指在物理环境中被跟踪的物体(参见 XrTrackableTypeANDROID):
- 平面(例如墙壁、地板、天花板、桌子)
- 物品(例如键盘、鼠标、笔记本电脑)
创建可跟踪对象跟踪器
XrTrackableTrackerANDROID 是一个句柄,表示在环境中发现和更新给定 XrTrackableTypeANDROID 类型的可跟踪对象时所需的资源。
XR_DEFINE_HANDLE(XrTrackableTrackerANDROID) xrCreateTrackableTrackerANDROID 函数的定义如下:
XrResult xrCreateTrackableTrackerANDROID( XrSession session, const XrTrackableTrackerCreateInfoANDROID* createInfo, XrTrackableTrackerANDROID* trackableTracker); 参数说明
session是创建该跟踪器的 XrSession。createInfo是一个指向 XrTrackableTrackerCreateInfoANDROID 结构的指针,其中包含用于创建跟踪器的参数。trackableTracker是一个指向句柄的指针,创建的 XrTrackableTrackerANDROID 将通过该句柄返回。
应用可以使用 xrCreateTrackableTrackerANDROID 函数来创建一个可跟踪对象跟踪器。
- 如果系统不支持指定类型的可跟踪对象,函数将返回
XR_ERROR_FEATURE_UNSUPPORTED。 - 如果发出调用的应用未被授予所需权限,函数将返回
XR_ERROR_PERMISSION_INSUFFICIENT。
应用可以在后续 API 调用中使用返回的跟踪器句柄。 XrTrackableTrackerANDROID 句柄最终必须通过 xrDestroyTrackableTrackerANDROID 函数释放。
有效用法(隐式)
- 必须先启用
XR_ANDROID_trackables扩展程序,然后才能调用 xrCreateTrackableTrackerANDROID session必须是有效的 XrSession 句柄createInfo必须是指向有效 XrTrackableTrackerCreateInfoANDROID 结构的指针trackableTracker必须是指向 XrTrackableTrackerANDROID 句柄的指针
返回代码
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_ERROR_FEATURE_UNSUPPORTED
XrTrackableTrackerCreateInfoANDROID 结构的定义如下:
typedef struct XrTrackableTrackerCreateInfoANDROID { XrStructureType type; void* next; XrTrackableTypeANDROID trackableType; } XrTrackableTrackerCreateInfoANDROID; 成员说明
type是此结构的 XrStructureType。next是NULL或指向结构链中下一个结构的指针。核心 OpenXR 或此扩展程序中未定义任何此类结构。trackableType是跟踪器将要跟踪的 XrTrackableTypeANDROID。
XrTrackableTrackerCreateInfoANDROID 结构在传递给 xrCreateTrackableTrackerANDROID 时,会为 XrTrackableTrackerANDROID 提供创建选项。
扩展程序可以定义能够附加到 next 上的结构,以允许对可跟踪对象跟踪器进行额外配置。
有效用法(隐式)
- 必须先启用
XR_ANDROID_trackables扩展程序,然后才能使用 XrTrackableTrackerCreateInfoANDROID type必须为XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROIDnext必须为NULL,或者指向结构链中的下一个结构的有效指针。另请参阅:XrTrackableObjectConfigurationANDROIDtrackableType必须是有效的 XrTrackableTypeANDROID 值
XrTrackableTypeANDROID 枚举的定义如下:
typedef enum XrTrackableTypeANDROID { XR_TRACKABLE_TYPE_NOT_VALID_ANDROID = 0, XR_TRACKABLE_TYPE_PLANE_ANDROID = 1, XR_TRACKABLE_TYPE_DEPTH_ANDROID = 1000463000, XR_TRACKABLE_TYPE_OBJECT_ANDROID = 1000466000 } XrTrackableTypeANDROID; xrDestroyTrackableTrackerANDROID 函数的定义如下:
XrResult xrDestroyTrackableTrackerANDROID( XrTrackableTrackerANDROID trackableTracker); 参数说明
trackableTracker是一个先前由 xrCreateTrackableTrackerANDROID 创建的 XrTrackableTrackerANDROID 句柄。
xrDestroyTrackableTrackerANDROID 函数用于销毁可跟踪对象跟踪器。
如果不存在其他使用相同 XrTrackableTypeANDROID 创建的有效 XrTrackableTrackerANDROID,系统可能会停用该可跟踪对象类型所需的跟踪服务,以节省系统资源。
有效用法(隐式)
- 必须先启用
XR_ANDROID_trackables扩展程序,然后才能调用 xrDestroyTrackableTrackerANDROID trackableTracker必须是有效的 XrTrackableTrackerANDROID 句柄
线程安全
- 对
trackableTracker及其任何子句柄的访问都必须在外部进行同步
返回代码
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALID
获取所有可跟踪对象
XrTrackableANDROID 原子的定义如下:
XR_DEFINE_ATOM(XrTrackableANDROID) XrTrackableANDROID 用于表示单个可跟踪对象,并且仅在其关联的 XrTrackableTrackerANDROID 的生命周期内有效。
xrGetAllTrackablesANDROID 函数的定义如下:
XrResult xrGetAllTrackablesANDROID( XrTrackableTrackerANDROID trackableTracker, uint32_t trackableCapacityInput, uint32_t* trackableCountOutput, XrTrackableANDROID* trackables); 参数说明
trackableTracker是要查询的 XrTrackableTrackerANDROID。trackableCapacityInput是trackables数组的容量,或设为 0 以请求获取所需的容量。trackableCountOutput是一个指针,指向写入的trackables数量;若trackables容量不足,则指向所需的容量。trackables是一个指向XrTrackableANDROID数组的指针。如果trackableCapacityInput为 0,它可以为NULL。如需详细了解如何检索所需的
trackables大小,请参阅缓冲区大小参数部分。
xrGetAllTrackablesANDROID 会填充一个 XrTrackableANDROID 数组,用以表示在环境中找到的可跟踪对象。返回的 trackables 的 XrTrackableTypeANDROID 必须与 trackableTracker 的 XrTrackableTypeANDROID 匹配。
获取可跟踪平面
xrGetTrackablePlaneANDROID 函数的定义如下:
XrResult xrGetTrackablePlaneANDROID( XrTrackableTrackerANDROID trackableTracker, const XrTrackableGetInfoANDROID* getInfo, XrTrackablePlaneANDROID* planeOutput); 参数说明
trackableTracker是要查询的 XrTrackableTrackerANDROID。getInfo是 XrTrackableGetInfoANDROID,其中包含了用于获取可跟踪平面的信息。planeOutput是一个指向 XrTrackablePlaneANDROID 结构的指针,可跟踪平面将通过该结构返回。
xrGetTrackablePlaneANDROID 函数会返回有关可跟踪平面的详细信息,例如其几何形状、朝向和跟踪状态。
平面信息会在调用 xrGetTrackablePlaneANDROID 时,使用 XrTrackableGetInfoANDROID::time、XrTrackableGetInfoANDROID::baseSpace 进行解析,并且是相对于基准空间的。
有效用法(隐式)
- 必须先启用
XR_ANDROID_trackables扩展程序,然后才能调用 xrGetTrackablePlaneANDROID trackableTracker必须是有效的 XrTrackableTrackerANDROID 句柄getInfo必须是指向有效 XrTrackableGetInfoANDROID 结构的指针planeOutput必须是指向 XrTrackablePlaneANDROID 结构的指针
返回代码
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_TIME_INVALID
XrTrackableGetInfoANDROID 结构的定义如下:
typedef struct XrTrackableGetInfoANDROID { XrStructureType type; void* next; XrTrackableANDROID trackable; XrSpace baseSpace; XrTime time; } XrTrackableGetInfoANDROID; 成员说明
type是此结构的 XrStructureType。next是NULL或指向结构链中下一个结构的指针。核心 OpenXR 或此扩展程序中未定义任何此类结构。trackable是要查询的XrTrackableANDROID平面。baseSpace平面姿态相对于time时刻的此 XrSpace。time是用于评估相对于baseSpace的坐标的XrTime。
当传递给 xrGetTrackablePlaneANDROID 时,XrTrackableGetInfoANDROID 结构提供了查询选项。trackable 必须与 xrGetTrackablePlaneANDROID 中使用的 trackableTracker 相对应。
如果 trackable 的可跟踪对象类型不是 XR_TRACKABLE_TYPE_PLANE_ANDROID,函数将返回 XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID。
有效用法(隐式)
- 必须先启用
XR_ANDROID_trackables扩展程序,然后才能使用 XrTrackableGetInfoANDROID type必须为XR_TYPE_TRACKABLE_GET_INFO_ANDROIDnext必须为NULL,或指向结构链中的下一个结构的有效指针baseSpace必须是有效的 XrSpace 句柄
XrTrackablePlaneANDROID 结构的定义如下:
typedef struct XrTrackablePlaneANDROID { XrStructureType type; void* next; XrTrackingStateANDROID trackingState; XrPosef centerPose; XrExtent2Df extents; XrPlaneTypeANDROID planeType; XrPlaneLabelANDROID planeLabel; XrTrackableANDROID subsumedByPlane; XrTime lastUpdatedTime; uint32_t vertexCapacityInput; uint32_t* vertexCountOutput; XrVector2f* vertices; } XrTrackablePlaneANDROID; 成员说明
type是此结构的 XrStructureType。next是NULL或指向结构链中下一个结构的指针。核心 OpenXR 或此扩展程序中未定义任何此类结构。trackingState是平面的 XrTrackingStateANDROID。centerPose是一个 XrPosef,定义了在相应的 XrTrackableGetInfoANDROID::baseSpace 参考系内平面的位置和朝向。这里的单位方向表示 +Y 轴平行于平面法线。extents是平面的 XrExtent2Df 尺寸。planeType是运行时为此平面确定的 XrPlaneTypeANDROID。planeLabel是运行时为此平面确定的 XrPlaneLabelANDROID。subsumedByPlane是包含此平面的那个平面的XrTrackableANDROID(如果不存在,则为XR_NULL_TRACKABLE_ANDROID)。lastUpdatedTime是平面最后一次更新的XrTime。vertexCapacityInput是vertices数组的容量,或设为 0 以请求获取所需的容量。vertexCountOutput是一个指针,指向写入的vertices数量;若vertices容量不足,则指向所需的容量。vertices是指向 XrVector2f 数组的指针。如果vertexCapacityInput为 0,它可以为NULL。顶点按逆时针顺序排列。多边形可以是凹形的,但不能自相交。- 如需详细了解如何检索所需的
vertices大小,请参阅缓冲区大小参数部分。
有效用法(隐式)
- 必须先启用
XR_ANDROID_trackables扩展程序,然后才能使用 XrTrackablePlaneANDROID type必须为XR_TYPE_TRACKABLE_PLANE_ANDROIDnext必须为NULL,或指向结构链中的下一个结构的有效指针trackingState必须是有效的 XrTrackingStateANDROID 值planeType必须是有效的 XrPlaneTypeANDROID 值planeLabel必须是有效的 XrPlaneLabelANDROID 值vertexCountOutput必须是指向uint32_t值的指针vertices必须是指向vertexCapacityInputXrVector2f 结构数组的指针vertexCapacityInput参数必须大于0
XrTrackingStateANDROID 枚举描述了 XrTrackableANDROID 的跟踪状态。
typedef enum XrTrackingStateANDROID { XR_TRACKING_STATE_PAUSED_ANDROID = 0, XR_TRACKING_STATE_STOPPED_ANDROID = 1, XR_TRACKING_STATE_TRACKING_ANDROID = 2 } XrTrackingStateANDROID; 说明 | |
| 表示对此可跟踪对象或锚点的跟踪已暂停,但未来可能会恢复。 |
| 对此可跟踪对象的跟踪已停止,且绝不会恢复。 |
| 系统正在跟踪此对象,并分析其当前姿态。 |
XrPlaneTypeANDROID 枚举是 XrTrackableANDROID 平面的类型。
typedef enum XrPlaneTypeANDROID { XR_PLANE_TYPE_HORIZONTAL_DOWNWARD_FACING_ANDROID = 0, XR_PLANE_TYPE_HORIZONTAL_UPWARD_FACING_ANDROID = 1, XR_PLANE_TYPE_VERTICAL_ANDROID = 2, XR_PLANE_TYPE_ARBITRARY_ANDROID = 3 } XrPlaneTypeANDROID; XrPlaneLabelANDROID 枚举是 XrTrackableANDROID 平面的标签。
typedef enum XrPlaneLabelANDROID { XR_PLANE_LABEL_UNKNOWN_ANDROID = 0, XR_PLANE_LABEL_WALL_ANDROID = 1, XR_PLANE_LABEL_FLOOR_ANDROID = 2, XR_PLANE_LABEL_CEILING_ANDROID = 3, XR_PLANE_LABEL_TABLE_ANDROID = 4 } XrPlaneLabelANDROID; 创建锚点空间
XrResult xrCreateAnchorSpaceANDROID( XrSession session, const XrAnchorSpaceCreateInfoANDROID* createInfo, XrSpace* anchorOutput); 参数说明
session是创建该锚点空间的 XrSession。createInfo是一个指向 XrAnchorSpaceCreateInfoANDROID 结构的指针,其中包含用于创建锚点空间的参数。anchorOutput是一个指向句柄的指针,创建的 XrSpace 将通过该句柄返回。
在任何时间点,锚点的位置和方向要么同时处于被跟踪状态,要么同时处于未被跟踪状态。这意味着,当应用为 anchorOutput 调用 xrLocateSpace 或 xrLocateSpaces 时,XR_SPACE_LOCATION_POSITION_TRACKED_BIT 和 XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT 必须同时被设置或同时被清除。
应用最终必须使用 xrDestroySpace 来释放返回的 XrSpace。
- 如果系统不支持锚点,则必须返回
XR_ERROR_FEATURE_UNSUPPORTED。 - 如果不支持特定的锚点附着方式,则必须返回
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID。
有效用法(隐式)
- 必须先启用
XR_ANDROID_trackables扩展程序,然后才能调用 xrCreateAnchorSpaceANDROID session必须是有效的 XrSession 句柄createInfo必须是指向有效 XrAnchorSpaceCreateInfoANDROID 结构的指针anchorOutput必须是指向 XrSpace 句柄的指针
返回代码
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROIDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_POSE_INVALIDXR_ERROR_TIME_INVALIDXR_ERROR_OUT_OF_MEMORY
XrAnchorSpaceCreateInfoANDROID 结构的定义如下:
typedef struct XrAnchorSpaceCreateInfoANDROID { XrStructureType type; void* next; XrSpace space; XrTime time; XrPosef pose; XrTrackableANDROID trackable; } XrAnchorSpaceCreateInfoANDROID; 成员说明
type是此结构的 XrStructureType。next是NULL或指向结构链中下一个结构的指针。核心 OpenXR 或此扩展程序中未定义任何此类结构。space是将在其上创建锚点的 XrSpace。time是锚点创建时的XrTime。pose是锚点的 XrPosef。trackable是锚点将附着于其上的XrTrackableANDROID。它可以是XR_NULL_TRACKABLE_ANDROID,用以创建一个空间锚点。
有效用法(隐式)
- 必须先启用
XR_ANDROID_trackables扩展程序,然后才能使用 XrAnchorSpaceCreateInfoANDROID type必须为XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROIDnext必须为NULL,或指向结构链中的下一个结构的有效指针space必须是有效的 XrSpace 句柄
获取所有可跟踪对象的示例代码
以下示例代码演示了如何获取给定类型的所有可跟踪对象。
XrSession session; // previously initialized // The function pointers are previously initialized using xrGetInstanceProcAddr. PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // previously initialized PFN_xrGetAllTrackablesANDROID xrGetAllTrackablesANDROID; // previously initialized PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // previously initialized XrTrackableTrackerCreateInfoANDROID createInfo{XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID}; createInfo.trackableType = XR_TRACKABLE_TYPE_PLANE_ANDROID; XrTrackableTrackerANDROID planeTrackableTracker; XrResult result = xrCreateTrackableTrackerANDROID( session, &createInfo, &planeTrackableTracker); if (result != XR_SUCCESS) { /* Handle failures. */ } uint32_t trackableCountOutput = 0; std::vector<XrTrackableANDROID> allPlaneTrackables; // Query the number of trackables available. result = xrGetAllTrackablesANDROID( planeTrackableTracker, 0, &trackableCountOutput, nullptr ); if (result == XR_SUCCESS) { allPlaneTrackables.resize(trackableCountOutput, XR_NULL_HANDLE); // Fetch the actual trackable handles in the appropriately resized array. result = xrGetAllTrackablesANDROID( planeTrackableTracker, trackableCountOutput, &trackableCountOutput, allPlaneTrackables.data()); if (result == XR_SUCCESS) { for (XrTrackableANDROID trackable : allPlaneTrackables) { // You now have all trackables of the specified type. } } } // Release trackable tracker. result = xrDestroyTrackableTrackerANDROID(planeTrackableTracker); 获取可跟踪平面的示例代码
以下示例代码演示了如何从一个现有的 XrTrackableANDROID(通过 XR_ANDROID_raycast 的命中结果或 xrGetTrackablesANDROID 获得)来获取一个可跟踪平面。
XrTrackableTrackerANDROID planeTracker; // previously created // The function pointers are previously initialized using xrGetInstanceProcAddr. PFN_xrGetTrackablePlaneANDROID xrGetTrackablePlaneANDROID; // previously initialized XrTime updateTime; // Time used for the current frame's simulation update. XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL. XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables(). XrTrackableGetInfoANDROID planeGetInfo; planeGetInfo.type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID; planeGetInfo.next = nullptr; planeGetInfo.trackable = planeTrackable; planeGetInfo.space = appSpace; planeGetInfo.time = updateTime; XrTrackablePlaneANDROID plane = { XR_TYPE_TRACKABLE_PLANE_ANDROID }; result = xrGetTrackablePlaneANDROID( planeTracker, &planeGetInfo, &plane ); if (result == XR_SUCCESS) { // Plane tracking state, center pose, extents, type now available in plane. } 创建锚点空间的示例代码
以下示例代码演示了如何创建一个附着于可跟踪对象的锚点空间。
XrSession session; // Created at app startup. XrTime updateTime; // Time used for the current frame's simulation update. XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL. XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables(). // Create an anchor at (2, 2, 2) world-coordinates. XrAnchorSpaceCreateInfoANDROID spatialAnchorCreateInfo; spatialAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID; spatialAnchorCreateInfo.next = nullptr; spatialAnchorCreateInfo.space = appSpace; spatialAnchorCreateInfo.time = updateTime; spatialAnchorCreateInfo.pose = { { 0, 0, 0, 1 }, { 2, 2, 2 } }; XrSpace spatialAnchor = XR_NULL_HANDLE; XrResult result = xrCreateAnchorSpaceANDROID( session, &spatialAnchorCreateInfo, &spatialAnchor ); // Create an anchor attached to a trackable. XrTrackablePlane plane = ...; XrAnchorSpaceCreateInfoANDROID trackableAnchorCreateInfo; trackableAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID; trackableAnchorCreateInfo.next = nullptr; trackableAnchorCreateInfo.space = appState; trackableAnchorCreateInfo.pose = plane.centerPose; trackableAnchorCreateInfo.trackable = planeTrackable; XrSpace trackableAnchor = XR_NULL_HANDLE; XrResult result = xrCreateAnchorSpaceANDROID( session, &trackableAnchorCreateInfo, &trackableAnchor ); while (true) { // app update loop // ... // Get the current location of the anchor's space w.r.t the world. XrSpaceLocation anchorLocation = { XR_TYPE_SPACE_LOCATION }; result = xrLocateSpace(trackableAnchor, appSpace, updateTime, &anchorLocation); if (anchor.trackingState == XR_TRACKING_STATE_TRACKING_ANDROID) { // Update anchor pose. doDrawingForAnchor(anchorLocation.pose); } else { // ... } } // Cleanup - destroy the space, detatch the anchor so its no longer tracked by the // runtime and then release all resources held by it. xrDestroySpace(spatialAnchor); xrDestroySpace(trackableAnchor); 新的基础类型
新的对象类型
新的枚举常量
XrStructureType 枚举新增了:
XR_TYPE_TRACKABLE_GET_INFO_ANDROIDXR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROIDXR_TYPE_TRACKABLE_PLANE_ANDROIDXR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
XrObjectType 枚举新增了:
XR_OBJECT_TYPE_TRACKABLE_TRACKER_ANDROID
XrResult 枚举新增了:
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROIDXR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
新枚举
新结构
- XrTrackableTrackerCreateInfoANDROID
- XrTrackableGetInfoANDROID
- XrTrackablePlaneANDROID
- XrAnchorSpaceCreateInfoANDROID
新函数
- xrCreateTrackableTrackerANDROID
- xrDestroyTrackableTrackerANDROID
- xrGetAllTrackablesANDROID
- xrGetTrackablePlaneANDROID
- xrCreateAnchorSpaceANDROID
问题
版本历史记录
- 修订版本 1,2024 年 9 月 27 日 (Kenny Vercaemer)
- 初始扩展程序说明。
OpenXR™ 和 OpenXR 徽标是 Khronos Group Inc. 拥有的商标,已在中国、欧盟、日本和英国注册为商标。