【发布时间】:2017-03-31 13:48:43
【问题描述】:
在你把我赶出去之前 - 我我知道this answer,但它似乎对我不起作用。不同之处还在于,在我的例子中,图像数据的来源是 WebGL 画布——而不是 img 节点。
我正在尝试将 ImageData 像这样放在画布上:
var c = document.createElement('canvas');
c.setAttribute('width', size.width);
c.setAttribute('height', size.height);
$('body').append(c)
// p contains a Uint8ClampedArray with imagedata coming from a WebGL canvas
var i = new ImageData(p, size.width, size.height);
var ctx = c.getContext('2d');
ctx.putImageData(i, 0, 0);
然后像这样翻转它:
var d = document.createElement('canvas');
d.width = c.width; d.height = c.height;
d.getContext('2d').drawImage(c, 0, 0);
ctx.clearRect(0, 0, c.width, c.height);
ctx.scale(-1, 1);
ctx.translate(c.width, 0);
ctx.drawImage(d, 0, 0);
但这失败得很惨。
数据来自这样的 WebGL 画布:
var gl = renderer.domElement.getContext("webgl")
var pixels = new Uint8Array(gl.drawingBufferWidth * gl.drawingBufferHeight * 4);
gl.readPixels(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
所以我认为像素阵列上的低级操作是一种解决方案,但在我开始之前,我想我会问一下。
我有一种预感,drawImage 对变换不敏感,但那会很有趣。请不要让我使用 toDataURL()
【问题讨论】:
-
"fails miserably" 究竟是什么意思?
-
对不起@LJᛃ - 挫败感渗透了。它什么也没做。它仍然会生成图片,但不会翻转。
标签: javascript html canvas webgl