如何从WebGL帧缓冲区中将内容绘制到我的画布'后备缓冲区中?

时间:2013-11-05 17:26:26

标签: canvas webgl draw framebuffer

我有一个现有的帧缓冲区(带有颜色和深度信息),我需要与画布的'backbuffer(绘图缓冲区)合成。如何将内容从一个帧缓冲区绘制到后台缓冲区?

或者,如果有办法直接操作绘图缓冲区,我可以直接将我的信息放入其中,而无需创建第二个帧缓冲区。现在写我正在使用:

将纹理写入帧缓冲区
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);

但是这对绘图缓冲区不起作用,因为当gl.FRAMEBUFFER未绑定时它会抛出错误(我不知道将它绑定到绘图缓冲区的方法)。

1 个答案:

答案 0 :(得分:0)

要从主屏幕缓冲区中获取数据,您需要将其数据copyTexImage2D复制到另一个纹理。

还要注意是否使用“preserveDrawingBuffer”设置为true来构建WebGL上下文的问题。上下文创建的默认值为false,这意味着在绘制后将控制权返回给浏览器后,您不能指望仍在那里的主绘图缓冲区的内容。

使用preserveDrawingBuffer = false通常是个好主意,因为它会对性能产生重大影响。