VRLayerInit
已弃用:此特性不再推荐。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在删除过程中,或者可能仅为兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅本页底部的兼容性表格以指导您的决策。请注意,此特性可能随时停止工作。
非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。
WebVR API 的 VRLayerInit 字典代表一个您想在 VR 显示器中呈现的内容层(一个 HTMLCanvasElement 或 OffscreenCanvas)。
注意:此字典是旧的 WebVR API 的一部分。它已被 WebXR Device API 取代。
您可以使用 VRDisplay.getLayers() 来检索 VRLayerInit 对象,并使用 VRDisplay.requestPresent() 方法来呈现它们。
实例属性
VRLayerInit.leftBounds已弃用-
定义了由
VRDisplay呈现的画布的左纹理边界。 VRLayerInit.rightBounds已弃用-
定义了由
VRDisplay呈现的画布的右纹理边界。 VRLayerInit.source已弃用-
定义了在调用
VRDisplay.submitFrame()时由VRDisplay呈现的画布。
示例
// 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 对象看起来像这样:
const init = {
leftBounds: [
/* … */
],
rightBounds: [
/* … */
],
source: canvasReference,
};
注意:canvasReference 指的是 <canvas> 元素本身,而不是与该画布关联的 WebGL 上下文。其他两个成员是数组。
规范
此字典是旧的 WebVR API 的一部分,已被 WebXR Device API 取代。它已不再是标准化进程的一部分。
在所有浏览器都实现新的 WebXR API 之前,建议依靠 A-Frame、Babylon.js 或 Three.js 等框架,或 polyfill 来开发可在所有浏览器上运行的 WebXR 应用程序。有关更多信息,请阅读 Meta 的从 WebVR 移植到 WebXR 指南。
浏览器兼容性
加载中…