別のキャンバス (同じ html ページ内) の getImageData 配列から (キャンバス内の要素で使用する) テクスチャを作成することは可能ですか? 多分three.jsなし?どうもありがとう、
ジェニファー
別のキャンバス (同じ html ページ内) の getImageData 配列から (キャンバス内の要素で使用する) テクスチャを作成することは可能ですか? 多分three.jsなし?どうもありがとう、
ジェニファー
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);
この機能に関する小さなチュートリアルがここにあります。
これが getImageData のポイントであり、画像を取得して操作し、任意のキャンバスに描画します。
imageData = someContext.getImageData(0, 0, canvasWidth, canvasHeight);
anotherContext.putImageData(imageData, 0, 0);
次のようなことをしています: http://jsfiddle.net/jaibuu/myRGr/
ピクセル操作を行うつもりがない場合は、getImageData/putImageData を使用せずに drawImage() のみを使用する必要がありますが、これは遅いです。
はい、texImage2D は ImageData を受け取ることができます。
var imageData = some2DCanvasContext.getImageData(...);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, imageData);
この機能をテストする WebGL 適合性テストの 1 つを次に示します。