将数组从C指针发送到JS函数而不进行复制

时间:2015-03-06 21:31:18

标签: javascript c emscripten

我想以非常高的速率向JS函数发送数据指针(以便在画布上呈现它)。使用Emscripten执行此操作的最佳方法是什么,而不复制实际数据?

以下是否正确?

void send(void const * data, unsigned length) {

    EM_ASM({

        var data = new Uint8Array(HEAP8.buffer, $0, $1);
        Module.send();

    }, data, length);

}

问题是它需要在每个帧上分配Uint8Array,这不会让垃圾收集器非常高兴...... :(

1 个答案:

答案 0 :(得分:2)

根据Emscripten GL implementation,似乎达到我想要的最好方法是TypedArray#subarray。我想知道它是否会影响垃圾收集,等等。

void send(void const * data, unsigned length) {

    EM_ASM({

        Module.send(HEAPU8.subarray($0, $0 + $1));

    }, data, length);

}