-/* $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"
-#include "types.h"
namespace Msp {
namespace GL {
-enum
+/**
+Tests incoming fragment alpha values against a reference. If the test fails,
+the fragment is discarded.
+*/
+class AlphaTest: public Bindable<AlphaTest>
+{
+private:
+ Predicate pred;
+ float ref;
+
+public:
+ AlphaTest();
+ AlphaTest(Predicate, float);
+
+ void bind() const;
+
+ static void unbind();
+};
+
+
+/**
+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, sizei width, sizei 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 depth_func(Predicate func);
+ void bind() const;
+
+ static void unbind();
+};
} // namespace GL
} // namespace Msp