X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftests.h;h=622834dcf888db6abb982abf1721a3291d8cc439;hb=b617c5d7b5283ad260a77f01e42e6170cabbc03d;hp=223396fe7f44b6a00e5cd7bca24c30215f610991;hpb=a4ec5410595ddf37bfbc0e85ad87d31a9cbf94f1;p=libs%2Fgl.git diff --git a/source/tests.h b/source/tests.h index 223396fe..622834dc 100644 --- a/source/tests.h +++ b/source/tests.h @@ -1,16 +1,16 @@ /* $Id$ This file is part of libmspgl -Copyright © 2007 Mikko Rasa, Mikkosoft Productions +Copyright © 2007, 2010 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ #ifndef MSP_GL_TESTS_H_ #define MSP_GL_TESTS_H_ +#include "bindable.h" #include "gl.h" #include "predicate.h" -#include "types.h" namespace Msp { namespace GL { @@ -22,12 +22,76 @@ enum DEPTH_TEST = GL_DEPTH_TEST }; -void scissor(int left, int bottom, sizei width, sizei height); +/** +Tests incoming fragment alpha values against a reference. If the test fails, +the fragment is discarded. +*/ +class AlphaTest: public Bindable +{ +private: + Predicate pred; + float ref; + +public: + AlphaTest(); + AlphaTest(Predicate, float); + + void bind() const; + + static void unbind(); +}; void alpha_func(Predicate func, float ref); + +/** +Tests incoming fragment depth values against the depth buffer. If the test +fails, the fragment is discarded. +*/ +class DepthTest: public Bindable +{ +private: + bool write; + Predicate pred; + + static const DepthTest *current; + +public: + DepthTest(); + DepthTest(Predicate, bool = true); + + void bind() const; + + static const DepthTest &lequal(); + static void unbind(); +}; + void depth_func(Predicate func); + +/** +Tests fragment coordinates against a rectangle. Any fragments outside the +rectangle are discarded. +*/ +class ScissorTest: public Bindable +{ +private: + int left; + int bottom; + unsigned width; + unsigned height; + +public: + ScissorTest(); + ScissorTest(int, int, unsigned, unsigned); + + void bind() const; + + static void unbind(); +}; + +void scissor(int left, int bottom, unsigned width, unsigned height); + } // namespace GL } // namespace Msp