假设我有四个内容层:A、B、C 和 D;每一个都代表一种类型的视觉内容。
每个层执行几个顺序渲染调用(没有来自各个层的交错渲染调用)。
此外,为了应用视觉效果,需要将 B 层和 D 层渲染到纹理。为了减少内存占用,我只使用了一个只有一个纹理的 FBO。
所以,目前我这样做:
- 渲染A内容;
- 绑定 FBO > 渲染 B 内容 > 取消绑定 FBO > 渲染纹理(B 内容);
- 渲染 C;
- 绑定 FBO > 渲染 D 内容 > 取消绑定 FBO > 渲染纹理(D 内容)。
这种方法的主要问题是,每次绑定/取消绑定 FBO 时,默认帧缓冲区都会保存到内存/从内存中恢复。
我不能简单地先将图层 B 和 D 绘制到 FBO,因为我无法更改图层的渲染顺序。
有没有更好的方法来做到这一点并避免主帧缓冲区的许多保存/恢复?请记住,这是一个示例,实际情况更复杂(更多层)。