是否可以使用自己使用fbos的渲染调用渲染到FBO? 例如,这里有一些伪代码。
绑定(顶级FBO)
渲染水< - (生成并使用自己的子fbos)
渲染阴影< - (生成并使用子fbos)
渲染常规场景 等。
unbind(顶级FBO)
模糊顶级FBO,绽放, 使用顶级FBO生成的纹理将最终场景渲染为四边形。我有兴趣在最后的游戏场景中像绽放一样进行后期处理。
答案 0 :(得分:0)
如果我的问题是正确的,你想要从不同的渲染结果中构建最终场景,对吧?首先,这是完全可能的。如果你愿意,你可以保留每个效果的FBO。但你的伪代码缺乏效率和会影响性能。不需要一直在运行时创建子FBO。这是一个昂贵的操作。如果你在一个后处理阶段的管道后你通常需要不超过2个FBO(屏幕外)。还记得你总是具有由上下文创建的默认FBO(前,后,左,右)。因此,您可以将3D内容渲染为FBO -1,而不是将其纹理用作FBO-2的源以应用后处理效果。然后blit结果进入默认屏幕FBO。
我没有理由为每个效果创建FBO。执行仍然是串行的。也就是说,你在效果后渲染效果,所以你可以反复重复使用相同的FBO。你也可以考虑,而不是多个FBO使用一个FBO的多个渲染缓冲区或纹理附件,并决定你想要渲染哪些东西。