我有为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;
}