WebGLRenderingContext:stencilOpSeparate() 方法

基线 广泛可用

此功能已得到良好建立,并且可以在许多设备和浏览器版本上运行。自以下日期起,它已在浏览器中可用 2015 年 7 月.

WebGL API 的 WebGLRenderingContext.stencilOpSeparate() 方法设置正面和/或背面模板测试操作。

语法

js
stencilOpSeparate(face, fail, zfail, zpass)

参数

failzfailzpass 参数接受下面列出的所有常量。

face

一个 GLenum,指定是否更新正面和/或背面模板状态。可能的值为

  • gl.FRONT
  • gl.BACK
  • gl.FRONT_AND_BACK
fail

一个 GLenum,指定当模板测试失败时要使用的函数。默认值为 gl.KEEP

zfail

一个 GLenum,指定当模板测试通过但深度测试失败时要使用的函数。默认值为 gl.KEEP

zpass

一个 GLenum,指定当模板测试和深度测试都通过时,或当模板测试通过且没有深度缓冲区或深度测试被禁用时要使用的函数。默认值为 gl.KEEP

返回值

无 (undefined).

常量

gl.KEEP

保留当前值。

gl.ZERO

将模板缓冲区值设置为 0。

gl.REPLACE

将模板缓冲区值设置为参考值,如 WebGLRenderingContext.stencilFunc() 中指定。

gl.INCR

递增当前模板缓冲区值。限制为最大可表示的无符号值。

gl.INCR_WRAP

递增当前模板缓冲区值。递增最大可表示的无符号值时,将模板缓冲区值环绕到零。

gl.DECR

递减当前模板缓冲区值。限制为 0。

gl.DECR_WRAP

递减当前模板缓冲区值。递减模板缓冲区值为 0 时,将模板缓冲区值环绕到最大可表示的无符号值。

gl.INVERT

按位反转当前模板缓冲区值。

示例

默认情况下,模板测试被禁用。要启用或禁用模板测试,请使用 enable()disable() 方法,并使用参数 gl.STENCIL_TEST

js
gl.enable(gl.STENCIL_TEST);
gl.stencilOpSeparate(gl.FRONT, gl.INCR, gl.DECR, gl.INVERT);

要获取有关模板和深度通过或失败的当前信息,请使用 getParameter() 查询以下常量。

js
gl.getParameter(gl.STENCIL_FAIL);
gl.getParameter(gl.STENCIL_PASS_DEPTH_PASS);
gl.getParameter(gl.STENCIL_PASS_DEPTH_FAIL);
gl.getParameter(gl.STENCIL_BACK_FAIL);
gl.getParameter(gl.STENCIL_BACK_PASS_DEPTH_PASS);
gl.getParameter(gl.STENCIL_BACK_PASS_DEPTH_FAIL);
gl.getParameter(gl.STENCIL_BITS);

规范

规范
WebGL 规范
# 5.14.3

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅