@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
63 lines • 4.21 kB
JavaScript
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