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