+ if(mask&DEPTH_TEST)
+ {
+ if(depth_test && depth_test->enabled)
+ {
+ glEnable(GL_DEPTH_TEST);
+ glDepthFunc(get_gl_predicate(depth_test->compare));
+ }
+ else
+ glDisable(GL_DEPTH_TEST);
+
+ glDepthMask(!depth_test || depth_test->write);
+ }
+
+ if(mask&STENCIL_TEST)
+ {
+ if(stencil_test && stencil_test->enabled)
+ {
+ glEnable(GL_STENCIL_TEST);
+ glStencilFunc(get_gl_predicate(stencil_test->compare), stencil_test->reference, 0xFFFFFFFF);
+ glStencilOp(get_gl_stencil_op(stencil_test->stencil_fail_op), get_gl_stencil_op(stencil_test->depth_fail_op), get_gl_stencil_op(stencil_test->depth_pass_op));
+ }
+ else
+ glDisable(GL_STENCIL_TEST);
+ }
+
+ if(mask&BLEND)
+ {
+ if(blend && blend->enabled)
+ {
+ glEnable(GL_BLEND);
+ glBlendEquation(get_gl_blend_equation(blend->equation));
+ glBlendFunc(get_gl_blend_factor(blend->src_factor), get_gl_blend_factor(blend->dst_factor));
+ glBlendColor(blend->constant.r, blend->constant.g, blend->constant.b, blend->constant.a);
+ }
+ else
+ glDisable(GL_BLEND);
+ }
+