JavaScript では、キャンバスのピクセルを直接操作して、単一のコピーで更新できます。
ctx = canvas.getContext('2d')
imageData = ctx.getImageData(0, 0, canvas.width, canvas.height)
pixelTypedArray = imageData.data
modifyPixels(pixelTypedArray)
// refresh canvas with single copy
ctx.putImageData(imageData, 0, 0)
しかし、wasmTypedArray
では、wasm メモリを使用して独自のものを割り当てる必要があり、その後使用できますimageData.data.set(myTypedArray)
が、新しい型付き配列の内容全体をキャンバスの型付き配列にコピーするだけのように見えますputImageData
。 2回目。
を使用して単一のコピーのみでキャンバスを更新できるように、キャンバスの ImageData を新しい ImageData に再割り当てする方法はありますctx.putImageData()
か?
そうでない場合、wasm を使用して画像を操作する利点の多くは、非効率的な二重コピーと二重のメモリ内表現によって無駄になるように思われます。特に、大きな画像を操作したり、canvas を継続的に更新したりする場合に顕著です。