WebGLRenderingContext: stencilFunc() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

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

WebGLRenderingContext.stencilFunc() 方法是 WebGL API 的一部分,用于设置模板测试的前后函数和参考值。

模板功能允许按像素启用和禁用绘制。它通常在多通道渲染中用于实现特殊效果。

语法

js
stencilFunc(func, ref, mask)

参数

func

一个 GLenum,指定测试函数。默认函数是 gl.ALWAYS。可能的值有:

  • gl.NEVER: 永远不通过。
  • gl.LESS: 当 (ref & mask) < (stencil & mask) 时通过。
  • gl.EQUAL: 当 (ref & mask) = (stencil & mask) 时通过。
  • gl.LEQUAL: 当 (ref & mask) <= (stencil & mask) 时通过。
  • gl.GREATER: 当 (ref & mask) > (stencil & mask) 时通过。
  • gl.NOTEQUAL: 当 (ref & mask) !== (stencil & mask) 时通过。
  • gl.GEQUAL: 当 (ref & mask) >= (stencil & mask) 时通过。
  • gl.ALWAYS: 永远通过。
ref

一个 GLint,指定模板测试的参考值。此值将被限制在 0 到 2^n - 1 的范围内,其中 n 是模板缓冲区中的位数。默认值为 0。

mask

一个 GLuint,指定一个按位掩码,用于在进行测试时对参考值和存储的模板值执行 AND 操作。默认值为全 1。

返回值

无(undefined)。

示例

默认情况下,模板测试是禁用的。要启用或禁用模板测试,请使用带有参数 gl.STENCIL_TESTenable()disable() 方法。

js
gl.enable(gl.STENCIL_TEST);
gl.stencilFunc(gl.LESS, 0, 0b1110011);

要获取当前的模板函数、参考值或其他模板信息,请使用 getParameter() 查询以下常量。

js
gl.getParameter(gl.STENCIL_FUNC);
gl.getParameter(gl.STENCIL_VALUE_MASK);
gl.getParameter(gl.STENCIL_REF);
gl.getParameter(gl.STENCIL_BACK_FUNC);
gl.getParameter(gl.STENCIL_BACK_VALUE_MASK);
gl.getParameter(gl.STENCIL_BACK_REF);
gl.getParameter(gl.STENCIL_BITS);

规范

规范
WebGL 规范
# 5.14.3

浏览器兼容性

另见