UNPKG

@pixi/core

Version:
54 lines (53 loc) 2.05 kB
"use strict"; var constants = require("@pixi/constants"), runner = require("@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.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 ? constants.BUFFER_TYPE.ELEMENT_ARRAY_BUFFER : constants.BUFFER_TYPE.ARRAY_BUFFER; } get index() { return this.type === constants.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); } } exports.Buffer = Buffer; //# sourceMappingURL=Buffer.js.map