X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftests.cpp;h=1a2a58352e2605a54669093c5cb4e2011557c774;hb=7f888de83aa5398fafaa7661547ee80395377b5c;hp=5b34bf69d9d37fc732c4f45c5ea1c55a41394be1;hpb=ceae2a27dfc58310c5bab7e3aa3fedf0fa9a1f49;p=libs%2Fgl.git diff --git a/source/tests.cpp b/source/tests.cpp index 5b34bf69..1a2a5835 100644 --- a/source/tests.cpp +++ b/source/tests.cpp @@ -1,7 +1,7 @@ /* $Id$ This file is part of libmspgl -Copyright © 2007 Mikko Rasa, Mikkosoft Productions +Copyright © 2007, 2010 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ @@ -10,9 +10,29 @@ Distributed under the LGPL namespace Msp { namespace GL { -void scissor(int left, int bottom, unsigned width, unsigned height) +AlphaTest::AlphaTest(): + pred(ALWAYS), + ref(0) +{ } + +AlphaTest::AlphaTest(Predicate p, float r): + pred(p), + ref(r) +{ } + +void AlphaTest::bind() const { - glScissor(left, bottom, width, height); + if(set_current(this)) + { + glEnable(GL_ALPHA_TEST); + glAlphaFunc(pred, ref); + } +} + +void AlphaTest::unbind() +{ + if(set_current(0)) + glDisable(GL_ALPHA_TEST); } void alpha_func(Predicate func, float ref) @@ -20,10 +40,82 @@ void alpha_func(Predicate func, float ref) glAlphaFunc(func, ref); } + +DepthTest::DepthTest(): + write(true), + pred(LESS) +{ } + +DepthTest::DepthTest(Predicate p, bool w): + write(w), + pred(p) +{ } + +void DepthTest::bind() const +{ + if(set_current(this)) + { + glEnable(GL_DEPTH_TEST); + glDepthFunc(pred); + glDepthMask(write); + } +} + +const DepthTest &DepthTest::lequal() +{ + static DepthTest test(LEQUAL); + return test; +} + +void DepthTest::unbind() +{ + if(set_current(0)) + { + glDisable(GL_DEPTH_TEST); + // Allow glClear(GL_DEPTH_BUFFER_BIT) to work + glDepthMask(true); + } +} + void depth_func(Predicate func) { glDepthFunc(func); } + +ScissorTest::ScissorTest(): + left(0), + bottom(0), + width(1), + height(1) +{ } + +ScissorTest::ScissorTest(int l, int b, unsigned w, unsigned h): + left(l), + bottom(b), + width(w), + height(h) +{ } + +void ScissorTest::bind() const +{ + if(set_current(this)) + { + glEnable(GL_SCISSOR_TEST); + glScissor(left, bottom, width, height); + } +} + +void ScissorTest::unbind() +{ + if(set_current(0)) + glDisable(GL_SCISSOR_TEST); +} + +void scissor(int left, int bottom, unsigned width, unsigned height) +{ + glScissor(left, bottom, width, height); +} + } // namespace GL } // namespace Msp