我正在尝试使用Uint8Array渲染图像并获取 WebGL:INVALID_OPERATION:texImage2D:ArrayBufferView不足以满足请求。
var gl = currentImage.gl;
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, columns, rows, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, Buffer);
在少数图像上,它工作正常,但是它会导致ArrayBuffer不足以产生少量图像的请求错误。
但是如果我从列和行中减去1,它可以正常工作但图像会倾斜。 然而,我可以维护一个2d画布并将其推送到GPU,但我不想保持它,因为它会杀死一些性能,我需要不必要地处理画布。
这是从1减去后的效果。
var gl = currentImage.gl;
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, columns-1, rows-1, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, Buffer);
我做错了什么或遗失了什么?
答案 0 :(得分:4)
我怀疑问题纹理的宽度不会超过4,而且你没有考虑UNPACK_ALIGNMENT。
尝试
gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);