javascript - 在不复制的情况下将数组从 C 指针发送到 JS 函数

标签 javascript c emscripten

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

以下是正确的吗?

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

    EM_ASM({

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

    }, data, length);

}

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

最佳答案

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

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

    EM_ASM({

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

    }, data, length);

}

关于javascript - 在不复制的情况下将数组从 C 指针发送到 JS 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28908012/

相关文章:

javascript - Meteor JS 在服务器发布方法中获取请求的 url

javascript - 多次从 promise 中获得相同的响应

javascript - Amped Studio 2 - 声音引擎

javascript - emscripten:如何解决 UnboundTypeError

c++ - emscripten 和 boost 库 : how to compile existing project for webassembly?

javascript - Jest - 如何使用一次期望来断言是否调用了多个函数

javascript - Angular 2 中的过滤器 ngFor 循环

python - 从 Python 调用 C/C++ 代码

c++ - 从管道创建(或传递)字符串

创建循环链接列表编译器停止工作