restart_index = 0;
}
- if(Buffer *ibuf = get_buffer())
+ Buffer *ibuf = get_buffer();
+ BindRestore _bind_ibuf(ibuf, ELEMENT_ARRAY_BUFFER);
+ if(ibuf)
{
- BindRestore _bind_ibuf(ibuf, ELEMENT_ARRAY_BUFFER);
-
if(dirty)
update_buffer();
refresh();
if(!current())
- {
vertices.apply();
- if(ibuf)
- ibuf->bind_to(ELEMENT_ARRAY_BUFFER);
- }
-
+ Bind bind_ibuf(ibuf, ELEMENT_ARRAY_BUFFER);
Bind bind_winding(winding);
for(list<Batch>::const_iterator i=batches.begin(); i!=batches.end(); ++i)
i->draw();
-
- if(!current() && ibuf)
- Buffer::unbind_from(ELEMENT_ARRAY_BUFFER);
}
void Mesh::draw(Renderer &renderer) const
return;
Buffer *vbuf = get_buffer();
- if(vbuf)
- {
- vbuf->bind_to(ARRAY_BUFFER);
- if(dirty)
- update_buffer();
- }
+ Bind _bind_vbuf(vbuf, ARRAY_BUFFER);
+ if(vbuf && dirty)
+ update_buffer();
const float *base = (vbuf ? reinterpret_cast<float *>(get_offset()) : &data[0]);
unsigned stride_bytes = stride*sizeof(float);
apply_arrays(&arrays, (old ? &old->arrays : 0), base, stride_bytes);
-
- if(vbuf)
- Buffer::unbind_from(ARRAY_BUFFER);
}
void VertexArray::apply_arrays(const vector<Array> *arrays, const vector<Array> *old_arrays, const float *base, unsigned stride_bytes)