Emscripten将uint8_t数组传递给javascript?

zezba9000

尝试将uint8_t * rgb图像数据缓冲区显示给通过WASM在C中处理的HTML画布。

在CI中,可以使用以下外部方法:

extern void JS_DisplayRenderData(uint8_t* data, int dataLength);

然后我这样调用extrnal方法:

int size = 1280 * 720 * 3;
uint8_t data[size];
memset(data, 255, size);
JS_DisplayRenderData(data, size);

然后,在javaScript中,我尝试显示缓冲区,如下所示:

if (typeof mergeInto !== 'undefined') mergeInto(LibraryManager.library,
{
    JS_DisplayRenderData: function(data, dataLength)
    {
        alert("Data Length: " + dataLength);
        var c = document.getElementById("canvas");
        var ctx = c.getContext("2d");
        var imgdata = ctx.getImageData(0, 0, c.width, c.height);
        var imgdatalen = imgdata.data.length;
        var i2 = 0;
        for (var i = 0; i < (imgdatalen / 4); i++)
        {
            imgdata.data[4*i] = data[i2];    // RED (0-255)
            imgdata.data[4*i+1] = data[i2+1];    // GREEN (0-255)
            imgdata.data[4*i+2] = data[i2+2];    // BLUE (0-255)
            imgdata.data[4*i+3] = 255;  // APLHA (0-255)
            i2 += 3;
        }
        ctx.putImageData(imgdata, 0, 0);
    }
});

但是我得到的都是黑色像素,即使它应该都是白色。

zezba9000

找到答案tnx:通过Emscripten在Javascript中进行结构操作

只需通过以下命令说明缓冲区类型:“ var a = HEAPU8.subarray(data);”

可以找到我用来通过C调用JS的方法Webassembly从wasm调用JavaScript方法,即c ++代码

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将uint8_t与数字进行比较

来自分类Dev

将uint8_t存储在NSMutableArray中

来自分类Dev

uint8_t *与uint8_t之间的区别

来自分类Dev

将char *转换为uint8_t

来自分类Dev

如何确定uint8_t的数组长度?

来自分类Dev

另一个uint8_t数组中的uint8_t数组可能吗?

来自分类Dev

uint8_t数组的数组

来自分类Dev

将uint8_t值数组转换为char数组中的十六进制等效项

来自分类Dev

对于数组循环使用int或uint8_t?

来自分类Dev

切片uint8_t数组

来自分类Dev

将uint8_t数组强制转换为uint32_t会发生什么?

来自分类Dev

std :: cout将uint8_t作为字符处理

来自分类Dev

以编程方式填充uint8_t数组

来自分类Dev

将char *转换为uint8_t

来自分类Dev

将作为struct一部分的数组作为uint8_t指针传递给函数

来自分类Dev

memcpy将float变量放入uint8_t数组

来自分类Dev

将位域转换为uint8_t

来自分类Dev

使用gcc和termios将uint8_t数组传递给Arduino

来自分类Dev

如何将uint16_t值分配给uint8_t数组?

来自分类Dev

将char *转换为uint8_t的数组(c)

来自分类Dev

uint8_t *与uint8_t之间的区别

来自分类Dev

将double传递给需要uint8_t *的函数

来自分类Dev

将IplImage转换为vector <uint8_t>

来自分类Dev

具有动态变量的uint8_t数组

来自分类Dev

C ++将字符串转换为uint8_t数组并返回

来自分类Dev

将字节反转的 uint64_t 复制到 uint8_t 数组

来自分类Dev

用C中的特定格式将char转换为uint8_t数组

来自分类Dev

如何打印 uint8_t 字节数组?

来自分类Dev

无法将 #define 整数作为 uint8_t / int 类型的参数或作为数组索引传递