2017-04-27 68 views
0

我正在使用webgl實現畫筆引擎。對於我繪製的每張郵票,我都希望將此郵票與幀緩衝區中的上一張圖紙混合,並使用我自己的自定義混合功能實現一些很酷的效果。我知道我可以將郵票繪製到自定義紋理,並使用着色器將自定義紋理與以前的繪圖幀緩衝區混合。但由於畫布非常大,所以表演非常緩慢,因爲有很多郵票可以畫畫。WebGL:如何使用自定義混合模式將每個繪圖與前一個幀緩衝區混合?

我知道在OpenGL ES2.0中,蘋果爲此提供了一個EXT_shader_framebuffer_fetch擴展,並且速度很快。但如何在WebGL中做到這一點,性能更好?

回答

0

即使使用擴展名,您也無法從WebGL的目標幀緩衝區中獲取數據。

你需要在兩個不同的紋理支持的幀緩衝區之間乒乓,從一個抽樣到另一個抽樣。 (如果需要,可以在這裏爲每幀繪製多次,以響應鼠標事件!)然後,只需在requestAnimationFrame的每一幀中將最近繪製的幀緩衝區的紋理繪製到後臺緩衝區。

+0

謝謝傑夫,我終於搞定了! –