WebGLRenderingContext: stencilOp() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

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

WebGL API 的 WebGLRenderingContext.stencilOp() 方法用於設定正面和背面片元測試的操作。

語法

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

按位反轉當前模板緩衝區的值。

示例

預設情況下,模板測試是停用的。要啟用或停用模板測試,請使用帶有引數 gl.STENCIL_TESTenable()disable() 方法。

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

瀏覽器相容性

另見