UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

49 lines 3.82 kB
/** * drawElements() can be used with 8, 16 or 32 unsinged ints arrays. * But the function does not know what type was passed as argument. * You need to specify the type: UNSIGNED_BYTE, UNSIGNED_SHORT or * UNSIGNED_INT. * * This helper function gives you the type of the array passed as argument. */ export function webglElementTypeFromTypedArray(typedArray) { if (typedArray instanceof Uint8Array) return WebGL2RenderingContext.UNSIGNED_BYTE; if (typedArray instanceof Uint16Array) return WebGL2RenderingContext.UNSIGNED_SHORT; if (typedArray instanceof Uint32Array) return WebGL2RenderingContext.UNSIGNED_INT; throw new Error("[webglElementTypeFromDataView] drawElements() and drawElementsInstanced() can only be fed with Uint8Array, Uint16Array or Uint32Array!"); } export function webglTypedArrayFromBufferSource(bufferSource, type) { const buffer = bufferSource instanceof ArrayBuffer ? bufferSource : bufferSource.buffer; switch (type) { case 5120: // BYTE return new Int8Array(buffer); case 5121: // UNSIGNED_BYTE return new Uint8Array(buffer); case 5122: // SHORT return new Int16Array(buffer); case 5123: // UNSIGNED_SHORT return new Uint16Array(buffer); case 5125: // UNSIGNED_INT return new Uint32Array(buffer); case 5126: // FLOAT return new Float32Array(buffer); default: throw new Error(`Don't know how to create a TypedArray for type "${webglLookup(type)}"!`); } } export function webglLookup(type) { if (gl) { for (const key in gl) { const value = gl[key]; if (value === type) return key; } } return `${type}`; } const canvas = document.createElement("canvas"); const gl = canvas.getContext("webgl2"); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViZ2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvd2ViZ2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSw4QkFBOEIsQ0FDMUMsVUFBbUM7SUFFbkMsSUFBSSxVQUFVLFlBQVksVUFBVTtRQUNoQyxPQUFPLHNCQUFzQixDQUFDLGFBQWEsQ0FBQTtJQUMvQyxJQUFJLFVBQVUsWUFBWSxXQUFXO1FBQ2pDLE9BQU8sc0JBQXNCLENBQUMsY0FBYyxDQUFBO0lBQ2hELElBQUksVUFBVSxZQUFZLFdBQVc7UUFDakMsT0FBTyxzQkFBc0IsQ0FBQyxZQUFZLENBQUE7SUFFOUMsTUFBTSxJQUFJLEtBQUssQ0FDWCx3SUFBd0ksQ0FDM0ksQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsK0JBQStCLENBQzNDLFlBQTBCLEVBQzFCLElBQVk7SUFFWixNQUFNLE1BQU0sR0FDUixZQUFZLFlBQVksV0FBVyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUE7SUFDNUUsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNYLEtBQUssSUFBSSxFQUFFLE9BQU87WUFDZCxPQUFPLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2hDLEtBQUssSUFBSSxFQUFFLGdCQUFnQjtZQUN2QixPQUFPLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2pDLEtBQUssSUFBSSxFQUFFLFFBQVE7WUFDZixPQUFPLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2pDLEtBQUssSUFBSSxFQUFFLGlCQUFpQjtZQUN4QixPQUFPLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2xDLEtBQUssSUFBSSxFQUFFLGVBQWU7WUFDdEIsT0FBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNsQyxLQUFLLElBQUksRUFBRSxRQUFRO1lBQ2YsT0FBTyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNuQztZQUNJLE1BQU0sSUFBSSxLQUFLLENBQ1gsbURBQW1ELFdBQVcsQ0FDMUQsSUFBSSxDQUNQLElBQUksQ0FDUixDQUFBO0lBQ1QsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVk7SUFDcEMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNMLEtBQUssTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbkIsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQW1DLENBQUMsQ0FBQTtZQUNyRCxJQUFJLEtBQUssS0FBSyxJQUFJO2dCQUFFLE9BQU8sR0FBbUMsQ0FBQTtRQUNsRSxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sR0FBRyxJQUFJLEVBQWtDLENBQUE7QUFDcEQsQ0FBQztBQUVELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDL0MsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQSJ9