@pixi/core
Version:
Core PixiJS
54 lines (53 loc) • 2.05 kB
JavaScript
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
;