2017-10-03 8 views
0

私は複数のWebワーカーで複数のシミュレーションを実行している瞬間に、プロジェクトについて話しています。transferControlToOffscreenを使用した後にキャンバスコンテキストを再接続しますか?

シミュレーションの現在の状態を表示する必要があるときは、メインスレッドのキャンバス要素でtransferControlToOffscreenを使用し、ハンドルをWebワーカーに渡します。

問題は次回transferControlToOffscreenを使用しようとするか、既存のハンドルを別のWebワーカーに渡してブラウザがキャンバスを再クローン化できないと不平を言うときです。

An OffscreenCanvas could not be cloned because it was detached 

transferControlToOffscreenを再度使用する前にキャンバスを再接続するための関数がありますか?


編集:オフスクリーンのキャンバスを、MessageChannelを使用するワーカー間で渡すことはできないようです。

キャンバスへのハンドルを無効にする唯一のオプションは、現在のキャンバス(メインスレッド内)を新しいもの(おそらくクローン)に置き換えてから、新しいオフスクリーンキャンバスをワーカーBに送りますか?

+0

にtransferControlToOffscreenを使用していたことが判明元のキャンバスの内容をオフスクリーンキャンバスのコンテキスト(「2d」または「webgl」)に置き換えます。 –

答えて

0

だから、これに対する唯一の解決策は、キャンバスのクローニング、自身のクローンとDOMでそれを置き換え、その後、私はあなたに `OffscreenCanvasRenderingContext2D#のcommit`を使用することができると思いクローン

関連する問題