1#[allow(missing_docs)]
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum BlendOp {
5 Add,
6 Subtract,
7 ReverseSubtract,
8}
9
10#[allow(missing_docs)]
12#[derive(Debug, Clone, Copy, PartialEq, Eq)]
13pub enum BlendFactor {
14 Zero,
15 One,
16 SourceColor,
17 OneMinusSourceColor,
18 SourceAlpha,
19 OneMinusSourceAlpha,
20 DestColor,
21 OneMinusDestColor,
22 DestAlpha,
23 OneMinusDestAlpha,
24}
25
26#[derive(Debug, Clone, Copy, PartialEq, Eq)]
28pub struct BlendState {
29 pub op: BlendOp,
31 pub source: BlendFactor,
33 pub dest: BlendFactor,
35}
36
37pub(crate) fn gl_blend_op(op: BlendOp) -> u32 {
38 match op {
39 BlendOp::Add => glow::FUNC_ADD,
40 BlendOp::Subtract => glow::FUNC_SUBTRACT,
41 BlendOp::ReverseSubtract => glow::FUNC_REVERSE_SUBTRACT,
42 }
43}
44
45pub(crate) fn gl_blend_factor(factor: BlendFactor) -> u32 {
46 match factor {
47 BlendFactor::Zero => glow::ZERO,
48 BlendFactor::One => glow::ONE,
49 BlendFactor::SourceColor => glow::SRC_COLOR,
50 BlendFactor::OneMinusSourceColor => glow::ONE_MINUS_SRC_COLOR,
51 BlendFactor::SourceAlpha => glow::SRC_ALPHA,
52 BlendFactor::OneMinusSourceAlpha => glow::ONE_MINUS_SRC_ALPHA,
53 BlendFactor::DestColor => glow::DST_COLOR,
54 BlendFactor::OneMinusDestColor => glow::ONE_MINUS_DST_COLOR,
55 BlendFactor::DestAlpha => glow::DST_ALPHA,
56 BlendFactor::OneMinusDestAlpha => glow::ONE_MINUS_DST_ALPHA,
57 }
58}