WebGLRenderingContext:stencilOp() 方法

基线 广泛可用

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

WebGLRenderingContext.stencilOp() 方法是 WebGL API 的一部分,用于设置正面和背面模板测试操作。

语法

js
stencilOp(fail, zfail, zpass)

参数

所有三个参数都接受下面列出的所有常量。

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.stencilOp(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 的浏览器中加载。

另请参阅