XRLightProbe:reflectionchange 事件

可用性有限

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

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

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

WebXR 的 reflectionchange 事件会在估计的反射立方体贴图每次发生变化时触发。这通常发生在用户在不同光照条件下移动,或光照本身发生直接变化时。此事件无法被取消。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("reflectionchange", (event) => { })

onreflectionchange = (event) => { }

事件类型

Event.

示例

使用 reflectionchange 事件

每当 reflectionchange 事件在 light probe 上触发时,您可以通过调用 XRWebGLBinding.getReflectionCubeMap() 来检索更新后的立方体贴图。这比在每个 XRFrame 中检索光照信息要更高效。

js
const glBinding = new XRWebGLBinding(xrSession, gl);
const lightProbe = await xrSession.requestLightProbe();
let glCubeMap = glBinding.getReflectionCubeMap(lightProbe);

lightProbe.addEventListener("reflectionchange", () => {
  glCubeMap = glBinding.getReflectionCubeMap(lightProbe);
});

onreflectionchange 事件处理程序属性

reflectionchange 事件也可以通过 onreflectionchange 事件处理程序属性来访问。

js
lightProbe.onreflectionchange = (event) => {
  glCubeMap = glBinding.getReflectionCubeMap(lightProbe);
};

规范

规范
WebXR 光照估算 API Level 1
# eventdef-xrlightprobe-reflectionchange
WebXR 光照估算 API Level 1
# dom-xrlightprobe-onreflectionchange

浏览器兼容性

另见