]> git.tdb.fi Git - libs/gl.git/blobdiff - source/tests.h
Keep track of which components have been set in Transform
[libs/gl.git] / source / tests.h
index b906c0cec2afada2ba5ebb36adcf7ef53ede89a8..f7d729504a37f34b477a635675197f4166c29791 100644 (file)
@@ -1,31 +1,54 @@
-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007  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"
 
 namespace Msp {
 namespace GL {
 
-enum
+/**
+Tests incoming fragment depth values against the depth buffer.  If the test
+fails, the fragment is discarded.
+*/
+class DepthTest: public Bindable<DepthTest>
 {
-       SCISSOR_TEST = GL_SCISSOR_TEST,
-       ALPHA_TEST   = GL_ALPHA_TEST,
-       DEPTH_TEST   = GL_DEPTH_TEST
+private:
+       bool write;
+       Predicate pred;
+
+public:
+       DepthTest();
+       DepthTest(Predicate, bool = true);
+
+       void bind() const;
+
+       static const DepthTest &lequal();
+       static void unbind();
 };
 
-void scissor(int left, int bottom, unsigned width, unsigned height);
 
-void alpha_func(Predicate func, float ref);
+/**
+Tests fragment coordinates against a rectangle.  Any fragments outside the
+rectangle are discarded.
+*/
+class ScissorTest: public Bindable<ScissorTest>
+{
+private:
+       int left;
+       int bottom;
+       unsigned width;
+       unsigned height;
+
+public:
+       ScissorTest();
+       ScissorTest(int, int, unsigned, unsigned);
+
+       void bind() const;
 
-void depth_func(Predicate func);
+       static void unbind();
+};
 
 } // namespace GL
 } // namespace Msp