使用 AssemblyScript 通过引用操作画布数据(类型化数组)
Posted
技术标签:
【中文标题】使用 AssemblyScript 通过引用操作画布数据(类型化数组)【英文标题】:Manipulating canvas data (typed arrays) by reference using AssemblyScript 【发布时间】:2020-07-23 19:23:23 【问题描述】:我正在尝试通过使用 AssemblyScript 将其从 Typescript 移植到 WebAssembly 来提高相当密集的图形方法的性能。该方法操作画布的ImageData
。
我无法将这个ImageData
(或至少Uint8ClampedArray
)从Typescript 传递到AssemblyScript。我找到了一个非常好的tutorial,详细说明了如何创建这些数据并将其从 AS 发送到 TS,但没有找到太多关于反过来的信息。
我很想知道如何做到这一点,最好不必在 AS 中制作 Uint8ClampedArray
的新副本,但我不确定这是否可能。非常感谢它为什么(不)的详细信息!
【问题讨论】:
【参考方案1】:我很想知道如何做到这一点,最好不必在 AS 中制作 Uint8ClampedArray 的新副本
你不能像detailed in this answer to a similar question那样通过 WebAssembly 直接读取/写入画布。您可以在 WebAssembly 和宿主 javascript 之间共享一个 WebAssembly.Memory
实例,但是,对于您渲染的每一帧,您仍然需要将此内存中的图像复制到您的画布中。
【讨论】:
很遗憾不能直接写入画布,但我想应该是沙盒。无论哪种方式,如何将数组写入WebAssembly.Memory
实例?另外,是否可以反过来呢?直接从 Javascript 访问“WebAssembly 拥有的数组”?因此写入该内存。以上是关于使用 AssemblyScript 通过引用操作画布数据(类型化数组)的主要内容,如果未能解决你的问题,请参考以下文章
是否可以从 AssemblyScript 导入 .wasm 文件?
三等号 (===) 在 AssemblyScript 中的行为是不是不同?
如何在 AssemblyScript 中使用 asc 编译 console.log("1")?