export class WASMGLvalue { ptr; size; constructor(ptr, size) { this.ptr = ptr; this.size = size; } } export async function loadWasmModule(path) { return WebAssembly.instantiateStreaming(fetch(path)); } export class WASMGL { exports; mem; constructor(wasm) { this.exports = wasm.instance.exports; const memSize = new Float32Array(this.exports.memory.buffer, this.exports.WASMGLmemory.value + 4, 1).at(0); this.mem = new Float32Array(this.exports.memory.buffer, this.exports.WASMGLmemory.value, memSize); } alloc(size) { const head = this.mem[2]; this.mem[2] += size; return head; } setstr(ptr, str) { for (let i = 0; i < str.length; i++) { this.mem[ptr] = str.charCodeAt(i); ++ptr; } } set(ptr, data) { data.forEach((v, i) => { this.mem[ptr + i] = v; }); return ptr; } }