[英]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.