Browse Source

Added logical operation to Framebuffer.

vectorfields
Vladimír Vondruš 14 years ago
parent
commit
433b43906d
  1. 43
      src/Framebuffer.h

43
src/Framebuffer.h

@ -59,6 +59,12 @@ class MAGNUM_EXPORT Framebuffer {
*/
Blending = GL_BLEND,
/**
* Logical operation
* @see setLogicOperation()
*/
LogicOperation = GL_COLOR_LOGIC_OP,
#ifndef MAGNUM_TARGET_GLES
/**
* Depth clamping. If enabled, ignores near and far clipping plane.
@ -437,6 +443,43 @@ class MAGNUM_EXPORT Framebuffer {
/*@}*/
/** @{ @name Logical operation */
/**
* @brief Logical operation
*
* @see setLogicOperation()
*/
enum class LogicOperation: GLenum {
Clear = GL_CLEAR, /**< `0` */
Set = GL_SET, /**< `1` */
Copy = GL_COPY, /**< `source` */
CopyInverted = GL_COPY_INVERTED,/**< `~source` */
Noop = GL_NOOP, /**< `destination` */
Invert = GL_INVERT, /**< `~destination` */
And = GL_AND, /**< `source & destination` */
AndReverse = GL_AND_REVERSE, /**< `source & ~destination` */
AndInverted = GL_AND_INVERTED, /**< `~source & destination` */
Nand = GL_NAND, /**< `~(source & destination)` */
Or = GL_OR, /**< `source | destination` */
OrReverse = GL_OR_REVERSE, /**< `source | ~destination` */
OrInverted = GL_OR_INVERTED, /**< `~source | destination` */
Nor = GL_NOR, /**< `~(source | destination)` */
Xor = GL_XOR, /**< `source ^ destination` */
Equivalence = GL_EQUIV /**< `~(source ^ destination)` */
};
/**
* @brief Set logical operation
*
* @attention You have to enable logical operation with setFeature() first.
*/
inline static void setLogicOperation(LogicOperation operation) {
glLogicOp(static_cast<GLenum>(operation));
}
/*@}*/
/** @{ @name Framebuffer creation and binding */
/**

Loading…
Cancel
Save