UNPKG

@pixi/core

Version:
56 lines (55 loc) 2 kB
import { BUFFER_TYPE } from "@pixi/constants"; import { Runner } from "@pixi/runner"; let UID = 0; class Buffer { /** * @param {PIXI.IArrayBuffer} data - the data to store in the buffer. * @param _static - `true` for static buffer * @param index - `true` for index buffer */ constructor(data, _static = !0, index = !1) { this.data = data || new Float32Array(1), this._glBuffers = {}, this._updateID = 0, this.index = index, this.static = _static, this.id = UID++, this.disposeRunner = new Runner("disposeBuffer"); } // TODO could explore flagging only a partial upload? /** * Flags this buffer as requiring an upload to the GPU. * @param {PIXI.IArrayBuffer|number[]} [data] - the data to update in the buffer. */ update(data) { data instanceof Array && (data = new Float32Array(data)), this.data = data || this.data, this._updateID++; } /** Disposes WebGL resources that are connected to this geometry. */ dispose() { this.disposeRunner.emit(this, !1); } /** Destroys the buffer. */ destroy() { this.dispose(), this.data = null; } /** * Flags whether this is an index buffer. * * Index buffers are of type `ELEMENT_ARRAY_BUFFER`. Note that setting this property to false will make * the buffer of type `ARRAY_BUFFER`. * * For backwards compatibility. */ set index(value) { this.type = value ? BUFFER_TYPE.ELEMENT_ARRAY_BUFFER : BUFFER_TYPE.ARRAY_BUFFER; } get index() { return this.type === BUFFER_TYPE.ELEMENT_ARRAY_BUFFER; } /** * Helper function that creates a buffer based on an array or TypedArray * @param {ArrayBufferView | number[]} data - the TypedArray that the buffer will store. If this is a regular Array it will be converted to a Float32Array. * @returns - A new Buffer based on the data provided. */ static from(data) { return data instanceof Array && (data = new Float32Array(data)), new Buffer(data); } } export { Buffer }; //# sourceMappingURL=Buffer.mjs.map