VRDisplay - 表示 WebVR API 支持的任何 VR 设备

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

VRDisplayWebVR API 的接口,表示 WebVR API 支持的任何 VR 设备。它包括通用的信息,例如设备 ID 和说明,以及开始呈现 VR 场景,检索眼睛参数和显示功能以及其他重要功能的方法。

可以通过调用 Navigator.getVRDisplays() 方法来返回所有已连接的 VR 设备的数组。

属性

VRDisplay.capabilities 只读

返回一个 VRDisplayCapabilities 对象,该对象表示 VRDisplay 的各种功能。

VRDisplay.depthFar

获取和设置 z 深度,该深度定义了视锥台的远平面,即场景的最远可见边界。

VRDisplay.depthNear

获取和设置 z 深度,该深度定义了视锥台的近平面,即场景的最近可见边界。

VRDisplay.displayId 只读

返回此特定 VRDisplay 的标识符,该标识符也用作 Gamepad API 中的关联点(请参阅 Gamepad.displayId)。

VRDisplay.displayName 只读

返回人类可读的名称以标识当前对象。

VRDisplay.isConnected 只读

返回一个 Boolean,指示是否已将 VRDisplay 连接到计算机。

VRDisplay.isPresenting 只读

返回一个 Boolean,指示 VRDisplay 当前是否正在通过它显示内容。

VRDisplay.stageParameters 只读

如果 VRDisplay 能够支持房间规模的体验,则返回包含房间规模参数的 VRStageParameters 对象。

方法

VRDisplay.getEyeParameters()

返回包含指定眼睛的眼睛参数的 VREyeParameters 对象。

VRDisplay.getFrameData()

接受一个 VRFrameData 对象,并使用呈现当前帧所需的信息填充它。

VRDisplay.getLayers()

返回当前由VRDisplay呈现的图层。

VRDisplay.resetPose()

重置此 VRDisplay的姿势,将其当前的 VRPose.positionVRPose.orientation 视为 “起点/零” 值。

VRDisplay.cancelAnimationFrame()

Window.cancelAnimationFrame 的特殊实现,它允许注销通过 VRDisplay.requestAnimationFrame() 注册的回调。

VRDisplay.requestAnimationFrame()

Window.requestAnimationFrame 的特殊实现,包含一个回调函数,该函数将在每次呈现 VRDisplay 的新帧时调用。

VRDisplay.requestPresent()

启动显示场景的 VRDisplay

VRDisplay.exitPresent()

停止显示场景的 VRDisplay

VRDisplay.submitFrame()

捕获当前显示的 VRLayer 的当前状态,并将其显示在 VRDisplay 上。

废弃的方法

VRDisplay.getPose()

返回一个 VRPose 对象,该对象定义了 VRDisplay 的未来预测姿势,就像当前帧实际显示时那样。不建议使用此方法 - 相反,您应该使用 VRDisplay.getFrameData(),它也返回了一个 VRPose 对象。

过时的方法

VRDisplay.getImmediatePose()

返回一个 VRPose 对象,该对象定义 VRDisplay 的当前姿势,不应用任何预测。 它已不再需要,并且已从规范中删除。

VRDisplay.hardwareUnitId

返回一个 DOMString,定义显示的共享 ID ,以及该硬件集合的任何其他设备(例如控制器)。它已不再需要,并且已经从规范中删除。现在显示器将使用 VRDisplay.displayId,并且相应的控制器现在将和 Gamepad.displayId 返回相同的 ID。

实例

if(navigator.getVRDisplays) {
  console.log('WebVR 1.1 supported');
  // 然后将显示器连接到计算机
  navigator.getVRDisplays().then(function(displays) {
    // 如果有显示器,请使用它来呈现场景
    if(displays.length > 0) {
      vrDisplay = displays[0];
      // 现在我们有了 VRDisplay 对象,并可以使用它做我们想做的事情
    }
  });
}

注意: 您可以在 raw-webgl-example 上看到完整的代码。

规范

规范 状态 备注
WebVR 1.1
VRDisplay 的定义
草稿 初始定义

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持 不支持≤18 — 79

554

645

不支持 未知 不支持
cancelAnimationFrame 不支持15 — 79

554

645

不支持 未知 不支持
capabilities 不支持15 — 79

554

645

不支持 未知 不支持
depthFar 不支持15 — 79

554

645

不支持 未知 不支持
depthNear 不支持15 — 79

554

645

不支持 未知 不支持
displayId 不支持15 — 79

554

645

不支持 未知 不支持
displayName 不支持15 — 79

554

645

不支持 未知 不支持
exitPresent 不支持15 — 79

554

645

不支持 未知 不支持
getEyeParameters 不支持15 — 79

554

645

不支持 未知 不支持
getFrameData 不支持15 — 79

554

645

不支持 未知 不支持
getImmediatePose 不支持 不支持

554

645

不支持 未知 不支持
getLayers 不支持15 — 79

554

645

不支持 未知 不支持
getPose 不支持15 — 79

554

645

不支持 未知 不支持
hardwareUnitId 不支持 不支持 不支持 不支持 未知 不支持
isConnected 不支持15 — 79

554

645

不支持 未知 不支持
isPresenting 不支持15 — 79

554

645

不支持 未知 不支持
requestAnimationFrame 不支持15 — 79

554

645

不支持 未知 不支持
requestPresent 不支持15 — 79

554

645

不支持 未知 不支持
resetPose 不支持15 — 79

554

645

不支持 未知 不支持
stageParameters 不支持15 — 79

554

645

不支持 未知 不支持
submitFrame 不支持15 — 79

554

645

不支持 未知 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 不支持56 — 80123 未知55 未知 未知 未知
cancelAnimationFrame 不支持56 — 80123 未知55 未知 未知 未知
capabilities 不支持56 — 80123 未知55 未知 未知 未知
depthFar 不支持56 — 80123 未知55 未知 未知 未知
depthNear 不支持56 — 80123 未知55 未知 未知 未知
displayId 不支持56 — 80123 未知55 未知 未知 未知
displayName 不支持56 — 80123 未知55 未知 未知 未知
exitPresent 不支持56 — 80123 未知55 未知 未知 未知
getEyeParameters 不支持56 — 80123 未知55 未知 未知 未知
getFrameData 不支持56 — 80123 未知55 未知 未知 未知
getImmediatePose 不支持 不支持 未知55 未知 未知 未知
getLayers 不支持56 — 80123 未知55 未知 未知 未知
getPose 不支持56 — 80123 未知55 未知 未知 未知
hardwareUnitId 不支持 不支持 未知 未知 未知 未知 未知
isConnected 不支持56 — 80123 未知55 未知 未知 未知
isPresenting 不支持56 — 80123 未知55 未知 未知 未知
requestAnimationFrame 不支持56 — 80123 未知55 未知 未知 未知
requestPresent 不支持56 — 80123 未知55 未知 未知 未知
resetPose 不支持56 — 80123 未知55 未知 未知 未知
stageParameters 不支持56 — 80123 未知55 未知 未知 未知
submitFrame 不支持56 — 80123 未知55 未知 未知 未知

1. 只能在 Chrome 的实验版本中使用。(其他构建在调用 Navigator.getVRDisplays() 时不会返回任何设备。)

2. Chrome 56 支持 Daydream View。

3. Chrome 57 支持 Google Cardboard。

4. 在 Firefox 55 中启用了 Windows 支持。

5. 在 Firefox 64 中启用了 macOS 支持。

6. Samsung Internet 7.0 支持 Google Cardboard。

相关链接

  • MozVr.com — Mozilla VR 团队提供的演示,下载和其他资源。