#include <msp/gl/extensions/arb_shader_objects.h>
#include <msp/gl/extensions/arb_uniform_buffer_object.h>
#include <msp/gl/extensions/arb_vertex_array_object.h>
+#include <msp/gl/extensions/msp_primitive_restart.h>
#include "blend.h"
#include "buffer.h"
#include "deviceinfo.h"
const PipelineState *PipelineState::last_applied = 0;
vector<int> PipelineState::bound_tex_targets;
+unsigned PipelineState::restart_index = 0;
PipelineState::PipelineState():
framebuffer(0),
{
glBindVertexArray(vertex_setup ? vertex_setup->get_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)
+ {
+ if(!restart_index)
+ glEnable(GL_PRIMITIVE_RESTART);
+ glPrimitiveRestartIndex(ri);
+ restart_index = ri;
+ }
+ }
}
if(mask&FACE_CULL)