WebGLRenderingContext: stencilOp()-Methode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die WebGLRenderingContext.stencilOp()-Methode der WebGL API legt sowohl die Vorder- als auch die Rückseiten-Stencil-Testaktionen fest.

Syntax

js
stencilOp(fail, zfail, zpass)

Parameter

fail

Ein GLenum, das die Funktion angibt, die verwendet werden soll, wenn der Stencil-Test fehlschlägt. Der Standardwert ist gl.KEEP.

zfail

Ein GLenum, das die Funktion angibt, die verwendet werden soll, wenn der Stencil-Test bestanden wird, aber der Tiefentest fehlschlägt. Der Standardwert ist gl.KEEP.

zpass

Ein GLenum, das die Funktion angibt, die verwendet werden soll, wenn sowohl der Stencil-Test als auch der Tiefentest bestanden werden, oder wenn der Stencil-Test bestanden wird und kein Tiefenpuffer existiert oder die Tiefentestung deaktiviert ist. Der Standardwert ist gl.KEEP.

Rückgabewert

Kein (undefined).

Konstanten

gl.KEEP

Behält den aktuellen Wert bei.

gl.ZERO

Setzt den Stencil-Pufferwert auf 0.

gl.REPLACE

Setzt den Stencil-Pufferwert auf den Referenzwert, wie durch WebGLRenderingContext.stencilFunc() spezifiziert.

gl.INCR

Erhöht den aktuellen Stencil-Pufferwert. Begrenzt auf den maximal darstellbaren ungeraden Wert.

gl.INCR_WRAP

Erhöht den aktuellen Stencil-Pufferwert. Setzt den Stencil-Pufferwert auf null zurück, wenn der maximal darstellbare ungerade Wert erhöht wird.

gl.DECR

Verringert den aktuellen Stencil-Pufferwert. Begrenzt auf 0.

gl.DECR_WRAP

Verringert den aktuellen Stencil-Pufferwert. Setzt den Stencil-Pufferwert auf den maximal darstellbaren ungeraden Wert zurück, wenn ein Stencil-Pufferwert von 0 verringert wird.

gl.INVERT

Invertiert den aktuellen Stencil-Pufferwert bitweise.

Beispiele

Der Stencil-Test ist standardmäßig deaktiviert. Um den Stencil-Test zu aktivieren oder zu deaktivieren, verwenden Sie die Methoden enable() und disable() mit dem Argument gl.STENCIL_TEST.

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

Um aktuelle Informationen über den Stencil- und Tiefe-Pass oder -Fail zu erhalten, fragen Sie die folgenden Konstanten mit getParameter() ab.

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);

Spezifikationen

Specification
WebGL Specification
# 5.14.3

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
stencilOp

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch