WebGLRenderingContext: stencilFuncSeparate() 方法

Baseline 已廣泛支援

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

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

WebGLRenderingContext.stencilFuncSeparate() 方法是 WebGL API 的一部分,用於設定模板測試的前部和/或後部函式及參考值。

模板(Stencil)功能允許逐畫素地啟用和停用繪製。它通常用於多通道渲染以實現特殊效果。

語法

js
stencilFuncSeparate(face, func, ref, mask)

引數

face

一個 GLenum,用於指定是更新正面還是背面模板狀態,或兩者都更新。可能的值為:

  • gl.FRONT
  • gl.BACK
  • gl.FRONT_AND_BACK
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.stencilFuncSeparate(gl.FRONT, gl.LESS, 0.2, 1110011);

要獲取當前的模板函式、參考值或其他模板資訊,請使用 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

瀏覽器相容性

另見