38 lines
970 B
JavaScript
38 lines
970 B
JavaScript
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;
|
|
}
|
|
}
|