X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fvertexarray.cpp;h=0d4fd919cffa8daa210c416414024357a07d9d59;hb=99b656a7c44859a038156b82365122a5e336b1e8;hp=38d490c05e8758511da2d0a92a2fc7ef5ca0e29d;hpb=d1800d7ea80290f4913d0203241cef1409656522;p=libs%2Fgl.git diff --git a/source/vertexarray.cpp b/source/vertexarray.cpp index 38d490c0..0d4fd919 100644 --- a/source/vertexarray.cpp +++ b/source/vertexarray.cpp @@ -33,18 +33,22 @@ VertexArray::~VertexArray() void VertexArray::use_vertex_buffer() { - if(vbuf) return; + if(vbuf && own_vbuf) + return; vbuf=new VertexBuffer(); own_vbuf=true; + update_data(); } void VertexArray::use_vertex_buffer(VertexBuffer *b) { - if(vbuf) return; - + if(own_vbuf) + delete vbuf; vbuf=b; + own_vbuf=false; + update_data(); } @@ -69,7 +73,7 @@ void VertexArray::reset(VertexFormat f) RefPtr VertexArray::modify() { - return new VertexArrayBuilder(*this, data); + return new VertexArrayBuilder(*this); } void VertexArray::apply() const @@ -144,7 +148,7 @@ unsigned VertexArray::enabled_arrays=0; VertexArray::Loader::Loader(VertexArray &a): - VertexArrayBuilder(a, a.data) + VertexArrayBuilder(a) { add("vertex2", static_cast(&Loader::vertex)); add("vertex3", static_cast(&Loader::vertex));