UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

63 lines 4.21 kB
import { TgdEvent } from "./../event/index.js"; export class TgdTextureDepth { constructor(context, options) { this.eventChange = new TgdEvent(); this._texture = null; this._width = 0; this._height = 0; const { gl } = context; this.gl = gl; this.name = `TextureDepth/${TgdTextureDepth.counter++}`; const texture = gl.createTexture(); if (!texture) throw new Error("Unable to create a WebGLTexture!"); this._texture = texture; console.log("🚀 [texture-depth] options =", options); // @FIXME: Remove this line written on 2025-04-18 at 14:30 // this.setParams({ // magFilter: "NEAREST", // minFilter: "NEAREST", // wrapS: "REPEAT", // wrapT: "REPEAT", // wrapR: "REPEAT", // }) // gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.storage.flipY) // gl.pixelStorei( // gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, // this.storage.premultipliedAlpha // ) } delete() { this.gl.deleteTexture(this.glTexture); } get width() { return this._width; } get height() { return this._height; } get glTexture() { if (this._texture) return this._texture; throw new Error(`Texture "${this.name}" has been deleted!`); } bind() { this.gl.bindTexture(this.gl.TEXTURE_2D, this.glTexture); } /** * * @param unit Unit to link the texture to * @param program The program that owns the uniform to update * @param uniformName The uniform that hold the texture */ activate(unit, program, uniformName) { const { gl } = this; gl.activeTexture(gl.TEXTURE0 + unit); this.bind(); if (program && uniformName) { program.uniform1i(uniformName, unit); } return this; } } TgdTextureDepth.counter = 0; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZS1kZXB0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXh0dXJlL3RleHR1cmUtZGVwdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQVNyQyxNQUFNLE9BQU8sZUFBZTtJQVd4QixZQUNJLE9BQXVDLEVBQ3ZDLE9BR0M7UUFiVyxnQkFBVyxHQUFHLElBQUksUUFBUSxFQUFtQixDQUFBO1FBRTVDLGFBQVEsR0FBd0IsSUFBSSxDQUFBO1FBQzdDLFdBQU0sR0FBRyxDQUFDLENBQUE7UUFDVixZQUFPLEdBQUcsQ0FBQyxDQUFBO1FBV2YsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLGVBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFBO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtRQUVqRSxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQTtRQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxDQUFBLENBQUMsMERBQTBEO1FBQy9HLG1CQUFtQjtRQUNuQiw0QkFBNEI7UUFDNUIsNEJBQTRCO1FBQzVCLHVCQUF1QjtRQUN2Qix1QkFBdUI7UUFDdkIsdUJBQXVCO1FBQ3ZCLEtBQUs7UUFDTCw2REFBNkQ7UUFDN0Qsa0JBQWtCO1FBQ2xCLHlDQUF5QztRQUN6QyxzQ0FBc0M7UUFDdEMsSUFBSTtJQUNSLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDdEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUN2QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTtRQUV2QyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUkscUJBQXFCLENBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQUMsSUFBWSxFQUFFLE9BQW9CLEVBQUUsV0FBb0I7UUFDN0QsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNuQixFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDcEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ1gsSUFBSSxPQUFPLElBQUksV0FBVyxFQUFFLENBQUM7WUFDekIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDeEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQzs7QUFuRWMsdUJBQU8sR0FBRyxDQUFDLEFBQUosQ0FBSSJ9