namespace Msp {
namespace GL {
-enum StencilOp
+enum StencilOp: std::uint8_t
{
KEEP,
SET_ZERO,
REPLACE,
- INCR,
- DECR,
+ INCR_CLAMP,
+ DECR_CLAMP,
INVERT,
INCR_WRAP,
DECR_WRAP
void actions(StencilOp, StencilOp, StencilOp);
};
- bool enabled;
- Predicate compare;
- StencilOp stencil_fail_op;
- StencilOp depth_fail_op;
- StencilOp depth_pass_op;
- unsigned reference;
+ bool enabled = false;
+ Predicate compare = ALWAYS;
+ StencilOp stencil_fail_op = KEEP;
+ StencilOp depth_fail_op = KEEP;
+ StencilOp depth_pass_op = KEEP;
+ unsigned reference = 0;
- StencilTest();
+ bool operator==(const StencilTest &) const;
+ bool operator!=(const StencilTest &s) const { return !operator==(s); }
};
+inline bool StencilTest::operator==(const StencilTest &other) const
+{
+ return enabled==other.enabled && compare==other.compare && stencil_fail_op==other.stencil_fail_op &&
+ depth_fail_op==other.depth_fail_op && depth_pass_op==other.depth_pass_op && reference==other.reference;
+}
+
void operator>>(const LexicalConverter &, StencilOp &);
void operator<<(LexicalConverter &, StencilOp);