Spec-Zone.ru › Web APIs

WebGLRenderingContext: метод blendFunc()

Базовая реализация Широко поддерживается

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Web Workers.

Метод WebGLRenderingContext.blendFunc() из WebGL API определяет функцию, используемую для смешивания пиксельной арифметики.

Синтаксис

blendFunc(sfactor, dfactor)

Параметры

sfactor

Значение GLenum, задающее множитель для исходных факторов смешивания. Значение по умолчанию — gl.ONE. Возможные значения приведены ниже.

dfactor

Значение GLenum, задающее множитель для факторов смешивания результата. Значение по умолчанию — gl.ZERO. Возможные значения приведены ниже.

Возвращаемое значение

Ничего (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

См. также

  • WebGLRenderingContext.blendColor()
  • WebGLRenderingContext.blendEquation()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API