UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 1.13 kB
import{BufferObject as e}from"../../../../webgl/BufferObject.js";import{Usage as t}from"../../../../webgl/enums.js";class r{constructor(r,i,s){this._elementSize=i,this._buffer=e.createVertex(r,t.STATIC_DRAW),this.resize(s)}destroy(){this._buffer.dispose()}get elementSize(){return this._elementSize}get capacity(){return this._capacity}get array(){return this._array}get buffer(){return this._buffer}get memoryUsage(){return{cpu:this._capacity*this._elementSize,gpu:this._capacity*this._elementSize}}copyRange(e,t,r,i=0){const s=new Uint8Array(this.array,e*this.elementSize,(t-e)*this.elementSize);new Uint8Array(r.array,i*this.elementSize).set(s)}transferAll(){this._buffer.setData(this._array)}transferRange(e,t){const r=e*this._elementSize,i=t*this._elementSize;this._buffer.setSubData(new Uint8Array(this._array),r,r,i)}resize(e){const t=e*this._elementSize,r=new ArrayBuffer(t);this._array&&(e>=this._capacity?new Uint8Array(r).set(new Uint8Array(this._array)):new Uint8Array(r).set(new Uint8Array(this._array).subarray(0,e*this._elementSize))),this._array=r,this._buffer.setSize(t),this._capacity=e}}export{r as default};