]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/blend.h
Add color write mask to blend state
[libs/gl.git] / source / core / blend.h
index ad7ba241bd1b1028e7e1bea45b5477f6b66245f6..a1180050163b31dbd009acd1987d27c8507fb5b3 100644 (file)
@@ -35,6 +35,16 @@ enum BlendFactor
        ONE_MINUS_CONSTANT_ALPHA
 };
 
+enum ColorWriteMask
+{
+       WRITE_NONE = 0,
+       WRITE_RED = 1,
+       WRITE_GREEN = 2,
+       WRITE_BLUE = 4,
+       WRITE_ALPHA = 8,
+       WRITE_ALL = 15
+};
+
 /**
 Blends incoming fragments with those already in the framebuffer.
 */
@@ -56,12 +66,17 @@ struct Blend
        BlendFactor src_factor;
        BlendFactor dst_factor;
        Color constant;
+       ColorWriteMask write_mask;
 
        Blend();
        Blend(BlendFactor, BlendFactor);
        Blend(BlendEquation, BlendFactor, BlendFactor);
 };
 
+
+inline ColorWriteMask operator|(ColorWriteMask m1, ColorWriteMask m2)
+{ return static_cast<ColorWriteMask>(static_cast<int>(m1)|static_cast<int>(m2)); }
+
 unsigned get_gl_blend_equation(BlendEquation);
 unsigned get_gl_blend_factor(BlendFactor);
 
@@ -71,6 +86,9 @@ void operator<<(LexicalConverter &, BlendEquation);
 void operator>>(const LexicalConverter &, BlendFactor &);
 void operator<<(LexicalConverter &, BlendFactor);
 
+void operator>>(const LexicalConverter &, ColorWriteMask &);
+void operator<<(LexicalConverter &, ColorWriteMask);
+
 } // namespace GL
 } // namespace Msp