UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

34 lines 3.85 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) { const texture = webglTextureCreate(gl); gl.activeTexture(gl.TEXTURE0 + (options.unit ?? 0)); gl.bindTexture(gl.TEXTURE_2D, texture); webglTextureParametersSet(gl, options); const { level = 0, internalFormat = "RGBA8", width, height, format = "RGBA", type = "UNSIGNED_BYTE", offset = 0, } = options; if (options.flipY) gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, options.flipY); 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZTJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3dlYmdsL3RleHR1cmUvdGV4dHVyZTJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtDQSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsRUFBMEI7SUFDekQsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQzlCLElBQUksQ0FBQyxHQUFHO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO0lBRTlELE9BQU8sR0FBRyxDQUFBO0FBQ2QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUNyQyxFQUEwQixFQUMxQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQTBCO0lBRXJFLElBQUksS0FBSztRQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLElBQUksS0FBSztRQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLElBQUksS0FBSztRQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLElBQUksU0FBUztRQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDcEYsSUFBSSxTQUFTO1FBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtBQUN4RixDQUFDO0FBRUQsTUFBTSxVQUFVLDZCQUE2QixDQUN6QyxFQUEwQixFQUMxQixJQVFrQixFQUNsQixPQUE2QztJQUU3QyxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUN0QyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbkQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3RDLHlCQUF5QixDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN0QyxNQUFNLEVBQ0YsS0FBSyxHQUFHLENBQUMsRUFDVCxjQUFjLEdBQUcsT0FBTyxFQUN4QixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FBRyxNQUFNLEVBQ2YsSUFBSSxHQUFHLGVBQWUsRUFDdEIsTUFBTSxHQUFHLENBQUMsR0FDYixHQUFHLE9BQU8sQ0FBQTtJQUNYLElBQUksT0FBTyxDQUFDLEtBQUs7UUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDeEUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDN0csT0FBTyxPQUFPLENBQUE7QUFDbEIsQ0FBQztBQUVELHFFQUFxRSJ9