[英]Reading pixels from render buffer webgl2
如何从 webgl2 中的渲染缓冲区读取像素? 我试过下面的代码,但我只得到零(0、0、0 ...),除了红色和 alpha 不为零
const targetTexture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, targetTexture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
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);
const frameBuf = gl.createFramebuffer()!;
gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuf);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, targetTexture, 0);
const depthBuf = gl.createRenderbuffer();
gl.bindRenderbuffer(gl.RENDERBUFFER, depthBuf);
gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, 512, 512);
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, depthBuf);
const colorBuf = gl.createRenderbuffer();
gl.bindRenderbuffer(gl.RENDERBUFFER, colorBuf);
gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, 512, 512);
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, colorBuf);
gl.viewport(0, 0, 512, 512);
gl.clearColor(1.0, 0.0, 0.0, 1.0);
gl.clearDepth(1.0);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
const results = new Uint8Array (512 * 512 * 4);
gl.readPixels(0, 0, 512, 512, gl.RGBA, gl.UNSIGNED_BYTE, results);
console.log(results)
所以看来我发布的代码确实有效。 问题是我也在使用gl.SCISSOR_TEST
(上面的代码中没有包含)并禁用它似乎可以解决我的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.