OpenXR 超详细spec--Chapter 2 基本原理

2.5. Runtime

An OpenXR runtime是实现OpenXR API的软件。一个系统中可能安装不止一个openXR runtime,但是在任何时间只有一个runtime是active。

2.6. Extensions

OpenXR是一个可扩展的API,可以通过添加new features进行扩展。和其他Khronos APIs类似,extension可以用来expose new OpenXR functions or modify 现有的openXR functions的功能。 Extensions是可选的,因此必须在扩展功能可用之前先由application使能它。因为Extensions是可选的,他们只能在runtime、graphics platforms、OS的子集上实现。因此,application必须先查询哪些extensions是可用的,然后再enable extensions。 Application使用xrEnumerateInstanceExtensionProperties()查询可用的extensions list。一旦application确定了支持哪些extension,它可以在调用xrCreateInstance()期间启用extensions的某些子集。 OpenXR Extenstions具有唯一的name,该name可以传达所提供功能的信息。

格式如下:

  • “XR_” 前缀来标识它是一个openXR extension。
  • Vendor tag的字符串标识也是扩展,tag必须是大写字母和十进制数字。
  • KHR:是Khronos extension。
  •  “EXT”:是非Khronos extension。
  • “_”下划线 唯一标识扩展的字符串,它只能使用小写字母和十进制数字,子串之间用“_”连接。 Eg:XR_KHR_composition_layer_cube

2.7 API Layers

OpenXR是一个分层的API,意味着用户或application可以在application和runtime实现之间插入API layers。这些API layers能够提供额外的功能,他们通过从上层拦截OpenXR功能来执行不同的操作,这个不同的操作是和没有该layer的对比。 在最简单的情况下,the layer仅仅使用相同参数向下调用下一层,但是一个更复杂的layer可能会实现它下层或者runtime中不存在的API功能。这种机制本质上是一种架构的“function shimming函数填充”或者“intercept拦截”feature,这种架构被设计到openXR中,mean to replace more informal methods of "hooking" API calls.

2.8. Return Codes

虽然核心API没设计去捕获不正确的使用,但一些情况仍需要return codes。API中的函数通过return code返回他们的状态。

Return code有两类:

  • Suceessful completion codes:非负值
  • Runtime error code:负值。
typedef enum XrResult {
    XR_SUCCESS = 0,
    XR_TIMEOUT_EXPIRED = 1,
    XR_ERROR_VALIDATION_FAILURE = -1,
    XR_ERROR_RUNTIME_FAILURE = -2,
}

2.9. Handles

2.10. Object Handle Types

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值