X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fblend.cpp;h=03fc0f02baf32c917e1be36ad9ec33f7237f9233;hp=841d88b86e1f7e8070edf60c6c390f010f8c33dc;hb=f14435e58bfa0fa697a06ba9a454bb30cd37d9d8;hpb=a5797c9babd17673285b3b15c7572c2d8fe1595c diff --git a/source/blend.cpp b/source/blend.cpp index 841d88b8..03fc0f02 100644 --- a/source/blend.cpp +++ b/source/blend.cpp @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2008 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #include "blend.h" #include "extension.h" #include "version_1_2.h" @@ -12,15 +5,48 @@ Distributed under the LGPL namespace Msp { namespace GL { -void blend_equation(BlendEquation eq) +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); + if(glBlendEquation) + glBlendEquation(eq); + glBlendFunc(src_factor, dst_factor); + } +} + +void Blend::unbind() { - require_version(1, 2); - glBlendEquation(eq); + if(set_current(0)) + glDisable(GL_BLEND); } -void blend_func(BlendFactor src, BlendFactor dst) +const Blend &Blend::alpha() { - glBlendFunc(src, dst); + static Blend blend(SRC_ALPHA, ONE_MINUS_SRC_ALPHA); + return blend; } } // namespace GL