@threepipe/plugin-gaussian-splatting
Version:
Gaussian Splatting for Threepipe
31 lines (26 loc) • 727 B
text/typescript
export class BufferPool {
private pool: ArrayBuffer[];
private bufferSize: number;
constructor(bufferSize: number, initialPoolSize: number = 0) {
this.bufferSize = bufferSize;
this.pool = [];
this.initPool(initialPoolSize);
}
private initPool(initialPoolSize: number): void {
for (let i = 0; i < initialPoolSize; i++) {
this.pool.push(new ArrayBuffer(this.bufferSize));
}
}
public getBuffer(): ArrayBuffer {
if (this.pool.length > 0) {
return this.pool.pop()!;
} else {
return new ArrayBuffer(this.bufferSize);
}
}
public returnBuffer(buffer: ArrayBuffer): void {
if (buffer.byteLength === this.bufferSize) {
this.pool.push(buffer);
}
}
}