如何实时混合两个 WebGL 画布?

问题描述

因此,我阅读了 this answer,虽然它似乎有效,但它极大地降低了我的 FPS,而且通常我的程序只能运行 10 秒,然后 WebGL 完全崩溃。

基本上,我正在尝试在我的 2D 自上而下游戏中实现照明。我通过有两个 WebGL 画布来做到这一点。在第一个中,每个像素的范围从纯黑色到纯白色,每个像素代表该位置的光强度。第二个 WebGL 画布只是我的常规游戏画布,游戏中的所有内容都在其中渲染。然后,在运行时,这两个画布每一帧都混合在一起,以模拟光照。

我不只是使用单个画布,因为我不确定如何仅使用一个画布。我不能简单地使我的游戏画布变暗,然后有选择地使亮起的区域变亮,因为原始像素颜色会从变暗着色器中丢失。因此,我尝试使用两个画布。第一个累加所有的光照值,然后当所有的光照值确定后,有一个单一的混合操作来混合两个画布。

同样,这是有效的,但它非常很慢并且容易崩溃。我认为问题在于我每帧创建两个纹理(一个是照明画布,一个是游戏画布),然后将所有纹理数据上传到每个纹理,然后进行混合。

有没有更有效的方法来执行这个操作?似乎每一帧都上传所有这些纹理数据只是完全扼杀了性能

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)