0

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 を継続的に更新したりする場合に顕著です。

4

0 に答える 0