WebGLRenderingContext: метод blendFunc()
Базовая реализация Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Примечание: Эта функция доступна в Web Workers.
Метод WebGLRenderingContext.blendFunc() из WebGL API определяет функцию, используемую для смешивания пиксельной арифметики.
Синтаксис
blendFunc(sfactor, dfactor)
Параметры
Возвращаемое значение
Ничего (undefined).
Исключения
- Если sfactor или dfactor не соответствуют одному из перечисленных значений, генерируется ошибка
gl.INVALID_ENUM. - Если в качестве исходных и целевых факторов используются постоянный цвет и постоянное значение альфа-канала одновременно, генерируется ошибка
gl.INVALID_ENUM.
Константы
Ниже приведены константы, которые можно использовать для sfactor и dfactor.
Формула для смешивания цвета выглядит следующим образом: цвет(RGBA) = (цветИсточник * sfactor) + (цветРезультат * dfactor). Значения RGBA находятся в диапазоне от 0 до 1.
В таблице RS, GS, BS, AS соответственно обозначают красный, зелёный, синий и альфа компонент исходного цвета, а RD, GD, BD, AD — соответственно красный, зелёный, синий и альфа компонент целевого цвета. Аналогично, RC, GC, BC, AC — красный, зелёный, синий и альфа компонент постоянного цвета. Все они являются значениями от 0 до 1 включительно.
| Константа | Фактор | Описание |
|---|---|---|
gl.ZERO | 0,0,0,0 | Умножает все цвета на 0. |
gl.ONE | 1,1,1,1 | Умножает все цвета на 1. |
gl.SRC_COLOR | RS, GS, BS, AS | Умножает все цвета на исходные цвета. |
gl.ONE_MINUS_SRC_COLOR | 1-RS, 1-GS, 1-BS, 1-AS | Умножает все цвета на 1 минус каждый исходный цвет. |
gl.DST_COLOR | RD, GD, BD, AD | Умножает все цвета на цвет результата. |
gl.ONE_MINUS_DST_COLOR | 1-RD, 1-GD, 1-BD, 1-AD | Умножает все цвета на 1 минус каждый цвет результата. |
gl.SRC_ALPHA | AS, AS, AS, AS | Умножает все цвета на значение альфа исходного цвета. |
gl.ONE_MINUS_SRC_ALPHA | 1-AS, 1-AS, 1-AS, 1-AS | Умножает все цвета на 1 минус значение альфа исходного цвета. |
gl.DST_ALPHA | AD, AD, AD, AD | Умножает все цвета на значение альфа целевого цвета. |
gl.ONE_MINUS_DST_ALPHA | 1-AD, 1-AD, 1-AD, 1-AD | Умножает все цвета на 1 минус значение альфа целевого цвета. |
gl.CONSTANT_COLOR | RC, GC, BC, AC | Умножает все цвета на постоянный цвет. |
gl.ONE_MINUS_CONSTANT_COLOR | 1-RC, 1-GC, 1-BC, 1-AC | Умножает все цвета на 1 минус постоянный цвет. |
gl.CONSTANT_ALPHA | AC, AC, AC, AC | Умножает все цвета на постоянное значение альфа-канала. |
gl.ONE_MINUS_CONSTANT_ALPHA | 1-AC, 1-AC, 1-AC, 1-AC | Умножает все цвета на 1 минус постоянное значение альфа-канала. |
gl.SRC_ALPHA_SATURATE | min(AS, 1 - AD), min(AS, 1 - AD), min(AS, 1 - AD), 1 | Умножает RGB цвета на меньшее из значения альфы исходного цвета или значения 1 минус значение альфы целевого цвета. Значение альфа умножается на 1. |
Примеры
Для использования функции смешивания, необходимо сначала включить смешивание с помощью WebGLRenderingContext.enable() с аргументом gl.BLEND.
gl.enable(gl.BLEND); gl.blendFunc(gl.SRC_COLOR, gl.DST_COLOR);
Для получения текущей функции смешивания, необходимо получить значения констант BLEND_SRC_RGB, BLEND_SRC_ALPHA, BLEND_DST_RGB, и BLEND_DST_ALPHA, которые возвращают одну из констант функций смешивания.
gl.enable(gl.BLEND); gl.blendFunc(gl.SRC_COLOR, gl.DST_COLOR); gl.getParameter(gl.BLEND_SRC_RGB) === gl.SRC_COLOR; // true
Спецификации
| Спецификация |
|---|
| Спецификация WebGL # 5.14.3 |
Совместимость с браузерами
| Десктоп | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
blendFunc |
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/blendFunc