2017-04-27 116 views
0

我正在使用webgl实现画笔引擎。对于我绘制的每张邮票,我都希望将此邮票与帧缓冲区中的上一张图纸混合,并使用我自己的自定义混合功能实现一些很酷的效果。我知道我可以将邮票绘制到自定义纹理,并使用着色器将自定义纹理与以前的绘图帧缓冲区混合。但由于画布非常大,所以表演非常缓慢,因为有很多邮票可以画画。WebGL:如何使用自定义混合模式将每个绘图与前一个帧缓冲区混合?

我知道在OpenGL ES2.0中,苹果为此提供了一个EXT_shader_framebuffer_fetch扩展,并且速度很快。但如何在WebGL中做到这一点,性能更好?

回答

0

即使使用扩展名,您也无法从WebGL的目标帧缓冲区中获取数据。

你需要在两个不同的纹理支持的帧缓冲区之间乒乓,从一个抽样到另一个抽样。 (如果需要,可以在这里为每帧绘制多次,以响应鼠标事件!)然后,只需在requestAnimationFrame的每一帧中将最近绘制的帧缓冲区的纹理绘制到后台缓冲区。

+0

谢谢杰夫,我终于搞定了! –