0

three.js renderer.domelement.todataurl を使用して、現在のビューの画像を取得します。それは正常に動作します。問題は、私のプロジェクトが 0.1 秒ごとに頻繁に画像をキャプチャする必要があることです。

この頻繁な環境下では、ブラウズはほとんどフリーズし、ユーザーは何もできません。関数 todataurl() として、ほとんどの CPU 時間を占有します。

どんな提案も大歓迎です。

私の考えは次のとおりです。1)画像をキャプチャする別の方法を見つけて、todataurl()を避けますか?2)レンダラーをWebワーカーに入れますか?

ありがとうございました。

4

1 に答える 1

1

まず第一に、ピクセルを高速で読み取ることはお勧めできません。通常のデスクトップ アプリケーションでは推奨されません。

必要に応じて、gl.readpixels を使用することをお勧めします。これは、JavaScript でピクセルを読み取る最速の方法です。また、幅と高さをできるだけ小さくして、より速く読めるようにします。

使い方:

var pixels = new Uint8Array(width * height * 4);
renderer.gl.readPixels(x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);

その後、ピクセル配列をワーカーで使用して、さらに実行することができます。または、後日までピクセルの変換を遅らせます。

==================================================

万が一、canvasrenderer を使用している場合は、context.getImagedata を使用する必要があります。

于 2013-08-12T07:41:58.840 に答える