WebGLRenderingContext: метод stencilOpSeparate()
Базовая поддержка Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Примечание: Эта функция доступна в Веб-воркерах.
Метод WebGLRenderingContext.stencilOpSeparate() из API WebGL задаёт действия проверки по маске стенок для передней и/или задней граней.
Синтаксис
stencilOpSeparate(face, fail, zfail, zpass)
Параметры
face-
Значение, указывающее, обновляется ли состояние маски стенок для передней и/или задней граней. Возможные значения:
gl.FRONTgl.BACKgl.FRONT_AND_BACK
fail-
Функция, используемая, когда проверка маски стенок завершается неудачно. По умолчанию значение
gl.KEEP. zfail-
Функция, используемая, когда проверка маски стенок прошла успешно, но проверка глубины завершилась неудачно. По умолчанию значение
gl.KEEP. zpass-
Функция, используемая, когда обе проверки (маски стенок и глубины) прошли успешно, или когда проверка маски стенок прошла успешно, но буфер глубины отсутствует или проверка глубины отключена. По умолчанию значение
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.
gl.enable(gl.STENCIL_TEST); gl.stencilOpSeparate(gl.FRONT, gl.INCR, gl.DECR, gl.INVERT);
Чтобы получить текущую информацию о проверке маски стенок и глубины (проход/непроход), запросите следующие константы с помощью getParameter().
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 |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
stencilOpSeparate |
9 | 12 | 4 | 12 | 5.1 | 25 | 4 | 12 | 8 | 1.5 | 4.4.3 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/stencilOpSeparate