@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
35 lines • 3.92 kB
JavaScript
export function webglTextureCreate(gl) {
const tex = gl.createTexture();
if (!tex)
throw new Error("Unable to create a WebGL Texture!");
return tex;
}
/**
* This is applied to the last binded texture.
*/
export function webglTextureParametersSet(gl, { wrapS, wrapT, wrapR, minFilter, magFilter }) {
if (wrapS)
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl[wrapS]);
if (wrapT)
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl[wrapT]);
if (wrapR)
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_R, gl[wrapR]);
if (minFilter)
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl[minFilter]);
if (magFilter)
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl[magFilter]);
}
export function webglTextureCreate2DFromArray(gl, data, options) {
var _a;
const texture = webglTextureCreate(gl);
gl.activeTexture(gl.TEXTURE0 + ((_a = options.unit) !== null && _a !== void 0 ? _a : 0));
gl.bindTexture(gl.TEXTURE_2D, texture);
if (options.flipY)
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, options.flipY);
webglTextureParametersSet(gl, options);
const { level = 0, internalFormat = "RGBA8", width, height, format = "RGBA", type = "UNSIGNED_BYTE", offset = 0, } = options;
gl.texImage2D(gl.TEXTURE_2D, level, gl[internalFormat], width, height, 0, gl[format], gl[type], data, offset);
return texture;
}
// @TODO: webglTextureCreateFromImage and webglTextureCreateFomBuffer
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZTJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3dlYmdsL3RleHR1cmUvdGV4dHVyZTJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVDQSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsRUFBMEI7SUFDekQsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQzlCLElBQUksQ0FBQyxHQUFHO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO0lBRTlELE9BQU8sR0FBRyxDQUFBO0FBQ2QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUNyQyxFQUEwQixFQUMxQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQTBCO0lBRXJFLElBQUksS0FBSztRQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLElBQUksS0FBSztRQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLElBQUksS0FBSztRQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLElBQUksU0FBUztRQUNULEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDekUsSUFBSSxTQUFTO1FBQ1QsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtBQUM3RSxDQUFDO0FBRUQsTUFBTSxVQUFVLDZCQUE2QixDQUN6QyxFQUEwQixFQUMxQixJQVFrQixFQUNsQixPQUE2Qzs7SUFFN0MsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDdEMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsUUFBUSxHQUFHLENBQUMsTUFBQSxPQUFPLENBQUMsSUFBSSxtQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25ELEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN0QyxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3hFLHlCQUF5QixDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN0QyxNQUFNLEVBQ0YsS0FBSyxHQUFHLENBQUMsRUFDVCxjQUFjLEdBQUcsT0FBTyxFQUN4QixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FBRyxNQUFNLEVBQ2YsSUFBSSxHQUFHLGVBQWUsRUFDdEIsTUFBTSxHQUFHLENBQUMsR0FDYixHQUFHLE9BQU8sQ0FBQTtJQUNYLEVBQUUsQ0FBQyxVQUFVLENBQ1QsRUFBRSxDQUFDLFVBQVUsRUFDYixLQUFLLEVBQ0wsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUNsQixLQUFLLEVBQ0wsTUFBTSxFQUNOLENBQUMsRUFDRCxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQ1YsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUNSLElBQUksRUFDSixNQUFNLENBQ1QsQ0FBQTtJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2xCLENBQUM7QUFFRCxxRUFBcUUifQ==