#include <msp/gl/extensions/arb_vertex_array_object.h>
+#include <msp/gl/extensions/arb_vertex_buffer_object.h>
#include <msp/gl/extensions/arb_vertex_shader.h>
#include <msp/gl/extensions/nv_primitive_restart.h>
#include "buffer.h"
vbuf = 0;
ibuf = 0;
vao_id = 0;
- defer_buffers = true;
+ defer_buffers = ARB_vertex_buffer_object;
dirty = true;
+ disallow_rendering = false;
winding = 0;
if(rm)
Mesh::~Mesh()
{
+ set_manager(0);
delete vbuf;
delete ibuf;
if(vao_id)
if(!current())
vertices.apply();
- Bind bind_ibuf(ibuf, ELEMENT_ARRAY_BUFFER);
+ BindRestore bind_ibuf(ibuf, ELEMENT_ARRAY_BUFFER);
Bind bind_winding(winding);
for(list<Batch>::const_iterator i=batches.begin(); i!=batches.end(); ++i)
}
renderer.set_mesh(this);
- renderer.set_element_buffer(ibuf);
renderer.set_winding_test(winding);
for(list<Batch>::const_iterator i=batches.begin(); i!=batches.end(); ++i)
if(!vao_id)
{
unbind();
- vertices.apply();
+ vertices.apply(false);
}
else if(set_current(this))
{
glBindVertexArray(0);
}
-Resource::AsyncLoader *Mesh::load(IO::Seekable &io)
+Resource::AsyncLoader *Mesh::load(IO::Seekable &io, const Resources *)
{
return new AsyncLoader(*this, io);
}