javascript - 如何实时混合两个 WebGL 画布?
问题描述
所以,我读了这个答案,虽然它似乎有效,但它大大降低了我的 FPS,通常我的程序只能在 WebGL 完全崩溃之前运行 10 秒。
基本上,我正在尝试在我的 2D 自上而下游戏中实现照明。我通过拥有两个 WebGL 画布来做到这一点。在第一个中,每个像素的范围从纯黑色到纯白色,每个像素代表该位置的光强度。第二个 WebGL 画布只是我的常规游戏画布,游戏中的所有内容都在其中被渲染。然后,在运行期间,每帧将这两个画布混合在一起,以模拟照明。
我不只是使用单个画布,因为我不确定如何只使用一个画布。我不能简单地使我的游戏画布变暗,然后选择性地使照明区域变亮,因为原始像素颜色会从变暗着色器中丢失。因此,我尝试使用两个画布。第一个累加所有的光照值,然后当所有的光照值都确定后,就有一个混合两个画布的混合操作。
同样,这是有效的,但它非常慢并且容易崩溃。我认为问题在于我每帧创建两个纹理(一个照明画布和一个游戏画布),然后将所有纹理数据上传到每个纹理,然后进行混合。
有没有更有效的方法来执行这个操作?似乎每帧上传所有这些纹理数据完全是在扼杀性能。
解决方案
推荐阅读
- ios - 如何回到我的项目 Xcode 10 的旧版本
- ios - 未找到 React Native Xcode 头文件!RCTBridge模块
- java - 如何从 Windows 10 PC 上卸载损坏的 Java 辅助技术 - AccessBridge
- vue.js - .net 核心 + vue + coalescevue
- php - 导出excel文件maatwebsite laravel
- ios - Swift 串行队列在运行时死亡
- hibernate - JPA ManyToOne 关系 - 无法插入具有外键的行
- html - 允许父 div 溢出窗口宽度
- scip - GCG/错误:调用hmetis不成功!在“优化”过程中发生
- css - 设置TextField高度material-ui