WebGL - 从渲染缓冲区读取像素数据
有没有办法从屏幕外的 WebGL 渲染缓冲区或帧缓冲区获取原始像素数据?
我正在使用 WebGL 进行一些图像处理,例如模糊图像、调整颜色等。 我使用帧缓冲区以完整图像尺寸渲染纹理,然后使用该纹理以较小尺寸在视口中显示。我可以获取缓冲区或纹理的像素数据,以便可以在普通画布 2d 上下文中使用它吗?或者我是否坚持将视口更改为完整图像大小并使用 canvas.toDataURL() 抓取数据?
谢谢。
Is there a way to get the raw pixel data from a WebGL render buffer or frame buffer that is off screen?
I'm using WebGL to do some image processing, e.g. blurring an image, adjusting color, etc.
I'm using frame buffers to render to textures at the full image size, then using that texture to display in the viewport at a smaller size. Can I get the pixel data of a buffer or texture so I can work with it in a normal canvas 2d context? Or am I stuck with changing the viewport to the full image size and grabbing the data with canvas.toDataURL()?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是一个非常古老的问题,但我最近在 Three.js 中寻找了相同的问题。没有直接的方法渲染到帧缓冲区,但实际上它是通过渲染到纹理(RTT)过程来完成的。我检查了框架源代码并找出了以下代码:
This is very old question, but I have looked for the same in three.js recently. There is no direct way to render to frame buffer, but actually it is done by render to texture (RTT) process. I check the framework source code and figure out the following code:
readPixels()
应该做你想做的事。在 WebGL 规范中了解更多信息,请访问 http://www.khronos.org/registry/webgl /规格/最新/readPixels()
should do what you want. Read more in the WebGL spec at http://www.khronos.org/registry/webgl/specs/latest/是的,您可以读取原始像素数据。在获取 webgl 上下文时将preserveDrawingBuffer 设置为true,然后通过WebGL 使用readPixels。
Yes, you can read raw pixel data. Set preserveDrawingBuffer as true while getting webgl context and afterwards make use of readPixels by WebGL.