- glEnable(GL_SCISSOR_TEST);
- glScissor(scissor->left, scissor->bottom, scissor->width, scissor->height);
- }
- else
- glDisable(GL_SCISSOR_TEST);
- }
-
- if(mask&PipelineState::SHPROG)
- glUseProgram(self->shprog ? self->shprog->id : 0);
-
- if(mask&PipelineState::VERTEX_SETUP)
- {
- const VertexSetup *vertex_setup = self->vertex_setup;
- glBindVertexArray(vertex_setup ? vertex_setup->id : 0);
- if(vertex_setup)
- {
- static Require _req(MSP_primitive_restart);
-
- vertex_setup->refresh();
- unsigned ri = (vertex_setup->get_index_type()==UNSIGNED_INT ? 0xFFFFFFFF : 0xFFFF);
- if(ri!=restart_index)
+ Rect fb_rect = framebuffer->get_rect();
+ if(changes&(PipelineState::VIEWPORT|PipelineState::FRAMEBUFFER))