@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
37 lines • 3.38 kB
JavaScript
export class TgdBuffer {
constructor(gl, options = {}) {
var _a, _b;
this.gl = gl;
const buffer = gl.createBuffer();
if (!buffer)
throw new Error("Unable to create WebGLBuffer!");
this._target = (_a = options === null || options === void 0 ? void 0 : options.target) !== null && _a !== void 0 ? _a : "ARRAY_BUFFER";
this._usage = (_b = options === null || options === void 0 ? void 0 : options.usage) !== null && _b !== void 0 ? _b : "STATIC_DRAW";
this.buffer = buffer;
const { data } = options;
if (data) {
this.bufferData(Object.assign(Object.assign({}, options), { data }));
}
}
get target() {
return this._target;
}
bind(target) {
const { gl, buffer } = this;
this._target = target !== null && target !== void 0 ? target : this._target;
gl.bindBuffer(gl[this._target], buffer);
}
bufferData(options) {
var _a, _b;
const { gl } = this;
this._usage = (_a = options.usage) !== null && _a !== void 0 ? _a : this._usage;
this._target = (_b = options.target) !== null && _b !== void 0 ? _b : this._target;
this.bind(options.target);
gl.bufferData(gl[this._target], options.data, gl[this._usage]);
}
delete() {
const { gl, buffer } = this;
gl.deleteBuffer(buffer);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J1ZmZlci9idWZmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkJBLE1BQU0sT0FBTyxTQUFTO0lBTWxCLFlBQ29CLEVBQTBCLEVBQzFDLFVBQXFDLEVBQUU7O1FBRHZCLE9BQUUsR0FBRixFQUFFLENBQXdCO1FBRzFDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNoQyxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQTtRQUU3RCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sbUNBQUksY0FBYyxDQUFBO1FBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSyxtQ0FBSSxhQUFhLENBQUE7UUFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN4QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFVBQVUsaUNBQU0sT0FBTyxLQUFFLElBQUksSUFBRyxDQUFBO1FBQ3pDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLENBQUMsTUFBOEI7UUFDL0IsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLGFBQU4sTUFBTSxjQUFOLE1BQU0sR0FBSSxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQ3JDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQTJEOztRQUNsRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFBO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxPQUFPLENBQUMsS0FBSyxtQ0FBSSxJQUFJLENBQUMsTUFBTSxDQUFBO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBQSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3pCLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsTUFBTTtRQUNGLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFBO1FBQzNCLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDM0IsQ0FBQztDQUNKIn0=