如何访问 WebGLRenderTarget 纹理内容

zum*_*man 3 render-to-texture rendertarget three.js

因此,我将场景渲染为纹理,然后我需要在 js 中处理纹理,然后修改内容或从一组值创建新纹理。

似乎我需要获取 WebGL 上下文并直接与 WebGL 接口来完成此操作。有人知道这样做的最佳方法吗?

zum*_*man 5

我最终只是从渲染器获取 webGL 上下文并调用 gl.readPixels()

var gl = renderer.getContext();
var framebuffer = renderTarget.__webglFramebuffer;
gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
var data = new Uint8Array(renderTarget.width * renderTarget.height * 4);
gl.readPixels(0,0,renderTarget.width,renderTarget.heigh,gl.RGBA,gl.UNSIGNED_BYTE,data);
Run Code Online (Sandbox Code Playgroud)

(renderTarget 是 THREE.WebGLRenderTarget 的一个实例)

  • 相反,您可以使用方法“WebGLRenderer.readRenderTargetPixels( renderTarget, x, y, width, height, buffer )”。 (2认同)