XRWebGLLayer:ignoreDepthValues 属性

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

只读的 XRWebGLLayer 属性 **ignoreDepthValues** 是一个布尔值,如果会话已配置为在渲染场景时忽略深度缓冲区中的值,则该值为 true。如果深度缓冲区用于确定顶点位置,则此属性为 false

ignoreDepthValues 的值只能在 XRWebGLLayer 实例化时设置,通过在 构造函数的 options 参数中设置相应的值来完成。

如果 WebGL 上下文的深度缓冲区在计算 3D 世界中点的位置时被使用,则此布尔值为 true。否则,如果此值为 true,则深度缓冲区的值被用于辅助场景中对象的放置。由于 XR 合成器 默认使用深度缓冲区,因此此值默认为 false,除非在使用其构造函数 XRWebGLLayer() 创建 XRWebGLLayer 时显式设置。

用法说明

ignoreDepthValues 属性为 false 时,XR 合成器会使用深度缓冲区中的值,这些值应该对场景是准确的,以期提高输出质量以及观看者的舒适度。

深度缓冲区宽度为 framebufferWidth 个条目,高度为 framebuffer 个条目。缓冲区中的每个条目指定了相应像素的深度,其值介于 0.0 和 1.0 之间。

深度缓冲区像素值为 0.0 对应于会话的 depthNear 深度,值为 1.0 对应于 depthFar 深度。

深度与正在渲染的每个点的坐标相结合,可以更准确地在 3D 空间中表示场景。

示例

如果使用 WebXR 的 Web 应用程序在渲染其内容时未使用深度缓冲区,或者深度缓冲区的内容无效,则应在创建 XRWebGLLayer 时将 ignoreDepthValues 设置为 true,以禁用 WebXR 渲染的深度缓冲区使用。下面的代码片段演示了这一点

js
const glLayerOptions = {
  ignoreDepthValues: true,
};

let glLayer = new XRWebGLLayer(xrSession, gl, glLayerOptions);

规范

规范
WebXR Device API
# dom-xrwebgllayer-ignoredepthvalues

浏览器兼容性

另见