WebGLRenderingContext: blendFuncSeparate() method

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.

Note: This feature is available in Web Workers.

Phương thức WebGLRenderingContext.blendFuncSeparate() của WebGL API xác định hàm nào được sử dụng để trộn số học pixel cho các thành phần RGB và alpha một cách riêng biệt.

Cú pháp

js
blendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha)

Thông số

srcRGB

Một GLenum chỉ định hệ số nhân cho màu đỏ, lục và lam (RGB) yếu tố pha trộn nguồn. Giá trị mặc định là gl.ONE. Để biết các giá trị có thể, hãy xem bên dưới.

dstRGB

Một GLenum chỉ định hệ số nhân cho màu đỏ, lục và lam (RGB) các yếu tố kết hợp điểm đến Giá trị mặc định là gl.ZERO. Để biết các giá trị có thể, hãy xem bên dưới.

srcAlpha

Một GLenum chỉ định một hệ số nhân cho việc trộn nguồn alpha nhân tố. Giá trị mặc định là gl.ONE. Để biết các giá trị có thể, hãy xem bên dưới.

dstAlpha

Một GLenum chỉ định một hệ số nhân cho việc trộn đích alpha nhân tố. Giá trị mặc định là gl.ZERO. Để biết các giá trị có thể, hãy xem bên dưới.

Giá trị trả về

Không có (undefined).

Ngoại lệ

  • Nếu srcRGB, dstRGB, srcAlpha hoặc dstAlpha không một trong các giá trị có thể được liệt kê, lỗi gl.INVALID_ENUM sẽ được đưa ra.
  • Nếu một màu không đổi và một giá trị alpha không đổi được sử dụng cùng nhau làm nguồn (srcRGB) và đích (dstRGB), lỗi gl.INVALID_ENUM sẽ được đưa ra.

Hằng số

Các hằng số sau có thể được sử dụng cho srcRGB, dstRGB, srcAlphadstAlpha

Công thức cho các hệ số hòa trộn có thể được mô tả như thế này (tất cả các giá trị RGBA nằm trong khoảng từ 0 đến 1):

  • màu(RGB) = (sourceColor * srcRGB) + (destinationColor * dstRGB)
  • color(A) = (sourceAlpha * srcAlpha) + (destinationAlpha * dstAlpha)

Trong bảng sau, RS, GS, BS, AS đại diện tương ứng cho thành phần red, green, bluealpha của nguồn, trong khi RD, GD, BD, AD đại diện tương ứng cho thành phần red, green, bluealpha của đích đến. Tương tự, RC, GC, BC, AC đại diện tương ứng cho thành phần red, green, bluealpha của một hằng số màu sắc. Chúng bao gồm tất cả các giá trị từ 0 đến 1.

TOK39���gl.SRC_COLOR
Không đổi Hệ số RGB Hệ số Alpha Mô tả
gl.ZERO 0,0,0 0 Nhân tất cả các màu với 0.
gl.ONE 1,1,1,1 1 Nhân tất cả các màu với 1.
RS, GS, BS AS Nhân tất cả các màu theo nguồn màu sắc.
gl.ONE_MINUS_SRC_COLOR 1-RS, 1-GS, 1-BS 1-AS Nhân tất cả các màu với 1 trừ mỗi màu nguồn.
gl.DST_COLOR RD, GD, BD AD Nhân tất cả các màu với màu đích.
gl.ONE_MINUS_DST_COLOR 1-RD, 1-GD, 1-BD 1-AD Nhân tất cả các màu với 1 trừ mỗi màu đích.
gl.SRC_ALPHA AS, AS, AS AS Nhân tất cả các màu với màu alpha nguồn.
gl.ONE_MINUS_SRC_ALPHA 1-AS, 1-AS, 1-AS 1-AS Nhân tất cả các màu với 1 trừ đi màu alpha nguồn.
gl.DST_ALPHA AD, AD, AD AD Nhân tất cả các màu với màu alpha đích.
gl.ONE_MINUS_DST_ALPHA 1-AD, 1-AD, 1-AD 1-AD Nhân tất cả các màu với 1 trừ đi màu alpha đích.
gl.CONSTANT_COLOR RC, GC, BC AC Nhân tất cả các màu với một màu không đổi.
gl.ONE_MINUS_CONSTANT_COLOR 1-RC, 1-GC, 1-BC 1-AC Nhân tất cả các màu với 1 trừ một màu không đổi.
gl.CONSTANT_ALPHA AC, AC, AC AC Nhân tất cả các màu với một giá trị alpha không đổi.
gl.ONE_MINUS_CONSTANT_ALPHA 1-AC, 1-AC, 1-AC 1-AC Nhân tất cả các màu với 1 trừ đi một giá trị alpha không đổi.���TOK276
gl.SRC_ALPHA_SATURATE phút(AS, 1 - AD), phút(AS, 1 - AD), phút(AS, 1 - AD) 1 Nhân các màu RGB với giá trị nhỏ hơn của màu alpha nguồn hoặc giá trị 1 trừ đi màu alpha đích. Giá trị alpha được nhân với 1.

Ví dụ

Để sử dụng chức năng hoà trộn, trước tiên bạn phải kích hoạt hoà trộn bằng WebGLRenderingContext.enable() với đối số gl.BLEND.

js
gl.enable(gl.BLEND);
gl.blendFuncSeparate(gl.SRC_COLOR, gl.DST_COLOR, gl.ONE, gl.ZERO);

Để có được hàm hòa trộn hiện tại, hãy truy vấn các hằng số BLEND_SRC_RGB, BLEND_SRC_ALPHA, BLEND_DST_RGB, và BLEND_DST_ALPHA để trả về một trong các hằng số của hàm hòa trộn.

js
gl.enable(gl.BLEND);
gl.blendFuncSeparate(gl.SRC_COLOR, gl.DST_COLOR, gl.ONE, gl.ZERO);
gl.getParameter(gl.BLEND_SRC_RGB) === gl.SRC_COLOR;
// true

Thông số kỹ thuật

Specification
WebGL Specification
# 5.14.3

Khả năng tương thích của trình duyệt

Xem thêm