+ },
+ glGetUniformLocation: (progId, name) => {
+ const id = createUniformLocId()
+ const loc = gl.getUniformLocation(programMap.get(progId), getString(name))
+ uniformLocMap.set(id, loc)
+ return id
+ },
+ glUniformMatrix4fv: (loc, count, transpose, addr) => {
+ if (count != 1) throw Error('count must be 1')
+ const vals = new Float32Array(memory.buffer.slice(addr, addr + 4 * 16))
+ gl.uniformMatrix4fv(uniformLocMap.get(loc), transpose, vals)