WebGL2RenderingContext: clientWaitSync() 方法

Baseline 已广泛支持

此功能已成熟,并可在多种设备和浏览器版本上运行。自 2021 年 9 月起,所有浏览器均已支持此功能。

注意:此功能在 Web Workers 中可用。

WebGL2RenderingContext.clientWaitSync() 方法是 WebGL 2 API 的一部分,它会阻塞并等待一个 WebGLSync 对象被触发信号,或者达到设定的超时时间。

语法

js
clientWaitSync(sync, flags, timeout)

参数

sync

要等待的 WebGLSync 对象。

flags

一个 GLbitfield,指定了控制刷新行为的标志位的按位组合。可以是 gl.SYNC_FLUSH_COMMANDS_BIT

超时

一个 GLint64,指定了等待 sync 对象被触发信号的超时时间(以纳秒为单位)。不得大于 gl.MAX_CLIENT_WAIT_TIMEOUT_WEBGL

返回值

一个 GLenum,指示 sync 对象的状态。

  • gl.ALREADY_SIGNALED:表示在调用此方法时 sync 对象已被触发信号。
  • gl.TIMEOUT_EXPIRED:表示 timeout 时间已过,但 sync 对象未被触发信号。
  • gl.CONDITION_SATISFIED:表示在 timeout 过期之前 sync 对象已被触发信号。
  • gl.WAIT_FAILED:表示在执行过程中发生了错误。

示例

js
const sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);
const status = gl.clientWaitSync(sync, 0, 0);

规范

规范
WebGL 2.0 规范
# 3.7.14

浏览器兼容性

另见