私は複数のWebワーカーで複数のシミュレーションを実行している瞬間に、プロジェクトについて話しています。transferControlToOffscreenを使用した後にキャンバスコンテキストを再接続しますか?
シミュレーションの現在の状態を表示する必要があるときは、メインスレッドのキャンバス要素でtransferControlToOffscreenを使用し、ハンドルをWebワーカーに渡します。
問題は次回transferControlToOffscreenを使用しようとするか、既存のハンドルを別のWebワーカーに渡してブラウザがキャンバスを再クローン化できないと不平を言うときです。
An OffscreenCanvas could not be cloned because it was detached
transferControlToOffscreenを再度使用する前にキャンバスを再接続するための関数がありますか?
編集:オフスクリーンのキャンバスを、MessageChannelを使用するワーカー間で渡すことはできないようです。
キャンバスへのハンドルを無効にする唯一のオプションは、現在のキャンバス(メインスレッド内)を新しいもの(おそらくクローン)に置き換えてから、新しいオフスクリーンキャンバスをワーカーBに送りますか?
にtransferControlToOffscreenを使用していたことが判明元のキャンバスの内容をオフスクリーンキャンバスのコンテキスト(「2d」または「webgl」)に置き換えます。 –