VRLayerInit

已弃用:不再推荐使用此功能。尽管某些浏览器可能仍然支持它,但它可能已从相关的 Web 标准中删除,或者正在被删除的过程中,或者仅出于兼容性目的而保留。避免使用它,并尽可能更新现有代码;请参阅此页面底部的兼容性表以指导您的决策。请注意,此功能可能随时停止工作。

VRLayerInitWebVR API中的一个字典,它表示您希望在 VR 显示器中呈现的内容层(一个HTMLCanvasElementOffscreenCanvas)。

注意:此字典是旧版WebVR API的一部分。它已被WebXR 设备 API取代。

您可以使用VRDisplay.getLayers()检索VRLayerInit对象,并使用VRDisplay.requestPresent()方法呈现它们。

实例属性

VRLayerInit.leftBounds 已弃用

定义了其内容将由VRDisplay呈现的画布的左侧纹理边界。

VRLayerInit.rightBounds 已弃用

定义了其内容将由VRDisplay呈现的画布的右侧纹理边界。

VRLayerInit.source 已弃用

定义了当调用VRDisplay.submitFrame()时,其内容将由VRDisplay呈现的画布。

示例

js
// currently returns an empty array
let layers = vrDisplay.getLayers();

if (navigator.getVRDisplays) {
  console.log("WebVR 1.1 supported");
  // Then get the displays attached to the computer
  navigator.getVRDisplays().then((displays) => {
    // If a display is available, use it to present the scene
    if (displays.length > 0) {
      vrDisplay = displays[0];
      console.log("Display found");
      // Starting the presentation when the button is clicked: It can only be called in response to a user gesture
      btn.addEventListener("click", () => {
        vrDisplay.requestPresent([{ source: canvas }]).then(() => {
          console.log("Presenting to WebVR display");

          // Here it returns an array of VRLayerInit objects
          layers = vrDisplay.getLayers();

          // …
        });
      });
    }
  });
}

VRLayerInit对象看起来像这样

js
{
  leftBounds : [/* … */],
  rightBounds: [/* … */],
  source: canvasReference
}

注意:canvasReference指的是<canvas>元素本身,而不是与画布关联的 WebGL 上下文。其他两个成员是数组。

规范

此字典是旧版WebVR API的一部分,已被WebXR 设备 API取代。它不再有望成为标准。

在所有浏览器都实现新的WebXR API之前,建议依靠框架(如A-FrameBabylon.jsThree.js)或polyfill来开发可在所有浏览器中运行的 WebXR 应用程序[1]

另请参阅