在Mac上的Chrome的WebGL2下,glReadPixels失败

时间:2018-11-30 18:16:05

标签: google-chrome webgl2

我有为WebGL 2编写的简单的matmul代码。此代码和参数在Windows的Chrome中运行没有问题。但是,当我使用webgl2上下文ID时,在Mac上的Chrome浏览器中始终出现此错误。

GL_INVALID_OPERATION : glReadPixels: format and type incompatible with the current read framebuffer

这些是我使用的参数:

readOutput(gl, width, height, gl.RED, gl.FLOAT, c);
...
function readOutput(gl, width, height, format, type, buffer) {
  gl.readPixels(0, 0, width, height, format, type, buffer);
}

这就是我创建纹理的方式:

const texA = createTexture(gl, gl.R32F, gl.RED, gl.FLOAT, shapeA[1], shapeA[0], a);

最后是createTexture的代码:

function createTexture(gl, internalFormat, format, type, width, height, data) {
  // Create the texture
  const texture = gl.createTexture();
  gl.bindTexture(gl.TEXTURE_2D, texture);
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
  gl.texImage2D(
    gl.TEXTURE_2D,
    0,  // 0 - no mipmaps
    internalFormat, width, height,
    0,  // Always 0 in OpenGL ES.
    format, type, data);
  checkError(gl);
  return texture;
}

0 个答案:

没有答案