]> git.tdb.fi Git - libs/gl.git/blobdiff - source/blend.cpp
Fix compile errors caused by faulty regex application in previous revision
[libs/gl.git] / source / blend.cpp
index c9407c2130fe3e7bb9d0770ee194ded9bd8d2649..8b82772fded1e7fc6acc755c312964ac867a0b3b 100644 (file)
@@ -1,18 +1,65 @@
 /* $Id$
 
 This file is part of libmspgl
-Copyright © 2008  Mikko Rasa, Mikkosoft Productions
+Copyright © 2008, 2010  Mikko Rasa, Mikkosoft Productions
 Distributed under the LGPL
 */
 
-#define GL_GLEXT_PROTOTYPES
 #include "blend.h"
+#include "extension.h"
+#include "version_1_2.h"
 
 namespace Msp {
 namespace GL {
 
+Blend::Blend():
+       eq(ADD),
+       src_factor(ONE),
+       dst_factor(ZERO)
+{ }
+
+Blend::Blend(BlendFactor sf, BlendFactor df):
+       eq(ADD),
+       src_factor(sf),
+       dst_factor(df)
+{ }
+
+Blend::Blend(BlendEquation e, BlendFactor sf, BlendFactor df):
+       eq(e),
+       src_factor(sf),
+       dst_factor(df)
+{
+       if(eq!=ADD)
+               static RequireVersion _ver(1, 2);
+}
+
+void Blend::bind() const
+{
+       if(set_current(this))
+       {
+               glEnable(GL_BLEND);
+               // XXX Don't try to set equation if version < 1.2
+               glBlendEquation(eq);
+               glBlendFunc(src_factor, dst_factor);
+       }
+}
+
+const Blend &Blend::alpha()
+{
+       static Blend blend(SRC_ALPHA, ONE_MINUS_SRC_ALPHA);
+       return blend;
+}
+
+void Blend::unbind()
+{
+       if(set_current(0))
+               glDisable(GL_BLEND);
+}
+
+
 void blend_equation(BlendEquation eq)
 {
+       static RequireVersion _ver(1, 2);
        glBlendEquation(eq);
 }