1

別のキャンバス (同じ html ページ内) の getImageData 配列から (キャンバス内の要素で使用する) テクスチャを作成することは可能ですか? 多分three.jsなし?どうもありがとう、

ジェニファー

4

3 に答える 3

2

WebGL のメソッドの最も優れた点texImage2Dは、最後の引数を ArrayBuffer ではなく DOM 要素にすることができることです。この場合、レンダリングされたコンテンツをテクスチャ オブジェクトにコピーします。

例えば:

var canvas2d = document.getElementById('canvas2d');
gl.bindTexture(gl.TEXTURE_2D, myTexture);
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, canvas2d);

この機能に関する小さなチュートリアルがここにあります

于 2013-03-12T22:46:59.803 に答える
1

これが getImageData のポイントであり、画像を取得して操作し、任意のキャンバスに描画します。

imageData = someContext.getImageData(0, 0, canvasWidth, canvasHeight);
anotherContext.putImageData(imageData, 0, 0);

次のようなことをしています: http://jsfiddle.net/jaibuu/myRGr/

ピクセル操作を行うつもりがない場合は、getImageData/putImageData を使用せずに drawImage() のみを使用する必要がありますが、これは遅いです。

于 2013-03-12T21:38:18.083 に答える
0

はい、texImage2D は ImageData を受け取ることができます。

var imageData = some2DCanvasContext.getImageData(...);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, imageData);

この機能をテストする WebGL 適合性テストの 1 つを次に示します。

https://www.khronos.org/registry/webgl/sdk/tests/conformance/textures/tex-image-and-sub-image-2d-with-image-data.html

于 2013-03-14T19:08:52.560 に答える