|
@@ -19,43 +19,44 @@ class DynamicPrimitive extends Primitive {
|
|
}
|
|
}
|
|
|
|
|
|
public function getBuffer( vertices : Int ) {
|
|
public function getBuffer( vertices : Int ) {
|
|
- if( vbuf == null ) vbuf = new hxd.FloatBuffer(vertices * stride) else vbuf.grow(vertices * stride);
|
|
|
|
|
|
+ if( vbuf == null ) vbuf = hxd.impl.Allocator.get().allocFloats(vertices * stride) else vbuf.grow(vertices * stride);
|
|
vsize = vertices;
|
|
vsize = vertices;
|
|
return vbuf;
|
|
return vbuf;
|
|
}
|
|
}
|
|
|
|
|
|
public function getIndexes( count : Int ) {
|
|
public function getIndexes( count : Int ) {
|
|
- if( ibuf == null ) ibuf = new hxd.IndexBuffer(count) else ibuf.grow(count);
|
|
|
|
|
|
+ if( ibuf == null ) ibuf = hxd.impl.Allocator.get().allocIndexes(count) else ibuf.grow(count);
|
|
isize = count;
|
|
isize = count;
|
|
return ibuf;
|
|
return ibuf;
|
|
}
|
|
}
|
|
|
|
|
|
public function flush() {
|
|
public function flush() {
|
|
|
|
+ var alloc = hxd.impl.Allocator.get();
|
|
if( vsize == 0 || isize == 0 ) {
|
|
if( vsize == 0 || isize == 0 ) {
|
|
if( buffer != null ) {
|
|
if( buffer != null ) {
|
|
- buffer.dispose();
|
|
|
|
|
|
+ alloc.disposeBuffer(buffer);
|
|
buffer = null;
|
|
buffer = null;
|
|
}
|
|
}
|
|
if( indexes != null ) {
|
|
if( indexes != null ) {
|
|
- indexes.dispose();
|
|
|
|
|
|
+ alloc.disposeIndexBuffer(indexes);
|
|
indexes = null;
|
|
indexes = null;
|
|
}
|
|
}
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
if( buffer != null && (buffer.isDisposed() || buffer.vertices < vsize) ) {
|
|
if( buffer != null && (buffer.isDisposed() || buffer.vertices < vsize) ) {
|
|
- buffer.dispose();
|
|
|
|
|
|
+ alloc.disposeBuffer(buffer);
|
|
buffer = null;
|
|
buffer = null;
|
|
}
|
|
}
|
|
if( indexes != null && (indexes.isDisposed() || indexes.count < isize) ) {
|
|
if( indexes != null && (indexes.isDisposed() || indexes.count < isize) ) {
|
|
- indexes.dispose();
|
|
|
|
|
|
+ alloc.disposeIndexBuffer(indexes);
|
|
indexes = null;
|
|
indexes = null;
|
|
}
|
|
}
|
|
|
|
|
|
if( buffer == null )
|
|
if( buffer == null )
|
|
- buffer = new h3d.Buffer(vsize, stride);
|
|
|
|
|
|
+ buffer = alloc.allocBuffer(vsize, stride, Dynamic);
|
|
if( indexes == null )
|
|
if( indexes == null )
|
|
- indexes = new h3d.Indexes(isize);
|
|
|
|
|
|
+ indexes = alloc.allocIndexBuffer(isize);
|
|
|
|
|
|
buffer.uploadVector(vbuf, 0, vsize);
|
|
buffer.uploadVector(vbuf, 0, vsize);
|
|
indexes.upload(ibuf, 0, isize);
|
|
indexes.upload(ibuf, 0, isize);
|
|
@@ -63,8 +64,15 @@ class DynamicPrimitive extends Primitive {
|
|
|
|
|
|
override function dispose() {
|
|
override function dispose() {
|
|
super.dispose();
|
|
super.dispose();
|
|
- vbuf = null;
|
|
|
|
- ibuf = null;
|
|
|
|
|
|
+ var alloc = hxd.impl.Allocator.get();
|
|
|
|
+ if( vbuf != null ) {
|
|
|
|
+ alloc.disposeFloats(vbuf);
|
|
|
|
+ vbuf = null;
|
|
|
|
+ }
|
|
|
|
+ if( ibuf != null ) {
|
|
|
|
+ alloc.disposeIndexes(ibuf);
|
|
|
|
+ ibuf = null;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
override function triCount() {
|
|
override function triCount() {
|