-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2008, 2010 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
+#include <msp/gl/extensions/ext_blend_minmax.h>
+#include <msp/gl/extensions/ext_blend_subtract.h>
#include "blend.h"
-#include "extension.h"
-#include "version_1_2.h"
namespace Msp {
namespace GL {
src_factor(sf),
dst_factor(df)
{
- if(eq!=ADD)
- static RequireVersion _ver(1, 2);
+ if(eq==MIN || eq==MAX)
+ static Require _req(EXT_blend_minmax);
+ else if(eq==SUBTRACT || eq==REVERSE_SUBTRACT)
+ static Require _req(EXT_blend_subtract);
}
void Blend::bind() const
if(set_current(this))
{
glEnable(GL_BLEND);
- // XXX Don't try to set equation if version < 1.2
- glBlendEquation(eq);
+ if(EXT_blend_minmax)
+ 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);
}
+const Blend &Blend::alpha()
+{
+ static Blend blend(SRC_ALPHA, ONE_MINUS_SRC_ALPHA);
+ return blend;
+}
-void blend_equation(BlendEquation eq)
+const Blend &Blend::additive()
{
- static RequireVersion _ver(1, 2);
- glBlendEquation(eq);
+ static Blend blend(ONE, ONE);
+ return blend;
}
-void blend_func(BlendFactor src, BlendFactor dst)
+const Blend &Blend::additive_alpha()
{
- glBlendFunc(src, dst);
+ static Blend blend(SRC_ALPHA, ONE);
+ return blend;
}
} // namespace GL