UNPKG

@animech-public/playcanvas

Version:
2 lines (1 loc) 1.11 kB
import{BUFFER_STATIC as t}from"./constants.js";let e=0;class s{constructor(s,i,r,a){let h;var u;if(this.usage=t,"object"==typeof a)this.usage=null!=(u=a.usage)?u:t,h=a.data;else if(arguments.length>3){var n;this.usage=null!=(n=arguments[3])?n:t,h=arguments[4]}this.device=s,this.format=i,this.numVertices=r,this.id=e++,this.impl=s.createVertexBufferImpl(this,i,a),this.numBytes=i.verticesByteSize?i.verticesByteSize:i.size*r,this.adjustVramSizeTracking(s._vram,this.numBytes),h?this.setData(h):this.storage=new ArrayBuffer(this.numBytes),this.device.buffers.push(this)}destroy(){const t=this.device,e=t.buffers.indexOf(this);-1!==e&&t.buffers.splice(e,1),this.impl.initialized&&(this.impl.destroy(t),this.adjustVramSizeTracking(t._vram,-this.storage.byteLength))}adjustVramSizeTracking(t,e){t.vb+=e}loseContext(){this.impl.loseContext()}getFormat(){return this.format}getUsage(){return this.usage}getNumVertices(){return this.numVertices}lock(){return this.storage}unlock(){this.impl.unlock(this)}setData(t){return t.byteLength===this.numBytes&&(this.storage=t,this.unlock(),!0)}}export{s as VertexBuffer};