UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

35 lines 3.92 kB
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==