我正在尝试使用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);我是做错了什么还是错过了什么?
发布于 2017-03-14 22:12:56
我怀疑问题纹理的宽度不会除以4,而且您没有考虑到UNPACK_ALIGNMENT。
试一试
gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);https://stackoverflow.com/questions/42789896
复制相似问题