namespace Msp {
namespace GL {
+void PipelineState::reset()
+{
+ set(framebuffer, static_cast<const Framebuffer *>(0), FRAMEBUFFER);
+ set(viewport, Rect::max(), VIEWPORT);
+ set(scissor, Rect::max(), SCISSOR);
+ set(shprog, static_cast<const Program *>(0), SHPROG);
+ for(BoundResource &r: resources)
+ {
+ r.changed = (r.type!=NO_RESOURCE);
+ r.type = NO_RESOURCE;
+ r.used = false;
+ r.block = 0;
+ r.buffer = 0;
+ }
+ set(vertex_setup, static_cast<const VertexSetup *>(0), VERTEX_SETUP);
+ set(primitive_type, TRIANGLES, PRIMITIVE_TYPE);
+ set(patch_size, 0U, PATCH_SIZE);
+ set(front_face, COUNTERCLOCKWISE, FACE_CULL);
+ set(face_cull, NO_CULL, FACE_CULL);
+ set(depth_test, DepthTest(), DEPTH_TEST);
+ set(stencil_test, StencilTest(), STENCIL_TEST);
+ set(blend, Blend(), BLEND);
+}
+
template<typename T>
void PipelineState::set(T &target, const T &value, unsigned flag)
{