X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fblend.cpp;h=8b82772fded1e7fc6acc755c312964ac867a0b3b;hp=854b2032d4e26ea31168beaf141790d6ffdb536f;hb=f17794d55923d4fb4f63e9d082d8d84a735a04e8;hpb=02dad9779326e5b8acc1fddbaec3a2f36da15c16 diff --git a/source/blend.cpp b/source/blend.cpp index 854b2032..8b82772f 100644 --- a/source/blend.cpp +++ b/source/blend.cpp @@ -1,7 +1,7 @@ /* $Id$ This file is part of libmspgl -Copyright © 2008 Mikko Rasa, Mikkosoft Productions +Copyright © 2008, 2010 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ @@ -12,6 +12,51 @@ Distributed under the LGPL 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);