可以从另一个画布的getImageData数组(在同一个html页面中)创建一个纹理(用于画布中的元素)?也许没有three.js?非常感谢,
珍
答案 0 :(得分:2)
关于WebGL的texImage2D
方法最酷的事情是它的最后一个参数可以是DOM元素而不是ArrayBuffer,在这种情况下,它将渲染的内容复制到纹理对象中。
例如:
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);
有一个关于此功能的小教程here。
答案 1 :(得分:1)
这就是getImageData的意思,让图像处理它然后在任何画布上绘制。
imageData = someContext.getImageData(0, 0, canvasWidth, canvasHeight);
anotherContext.putImageData(imageData, 0, 0);
执行以下操作:http://jsfiddle.net/jaibuu/myRGr/
如果您不打算进行像素操作,则应该只使用drawImage(),而不使用较慢的getImageData / putImageData。
答案 2 :(得分:0)
是的,texImage2D可以拍摄ImageData。
var imageData = some2DCanvasContext.getImageData(...);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, imageData);
以下是测试此功能的WebGL一致性测试之一