- if(vbuf && ibuf)
- return;
-
- if(!vbuf)
- vbuf = new Buffer(ARRAY_BUFFER);
- vertices.use_buffer(vbuf);
-
- if(!ibuf)
- ibuf = new Buffer(ELEMENT_ARRAY_BUFFER);
+ if(mask&VERTEX_BUFFER)
+ {
+ unsigned req_size = vertices.get_required_buffer_size();
+ if(!vbuf || (vbuf->get_size()>0 && vbuf->get_size()<req_size))
+ {
+ delete vbuf;
+ vbuf = new Buffer(ARRAY_BUFFER);
+ vertices.use_buffer(vbuf);
+ vtx_setup.set_vertex_array(vertices);
+ dirty |= VERTEX_BUFFER;
+ }
+ }