我有一个 opengl 上下文,我在其中渲染了几个线框图元。我想在其中一些(不是全部)上应用一些后期处理效果(例如模糊、绽放)。为了实现这一点,我定义了一个带有附加纹理(颜色缓冲区)和渲染缓冲区(深度缓冲区)的屏幕外帧缓冲区。然后,我执行以下操作:
- 绑定屏幕外缓冲区
- 设置透视图
- 绘制我想要模糊的线框图元
- 取消绑定屏幕外帧缓冲区并绑定“主”帧缓冲区
绘制不应进行后处理的更多图元
设置正交视图
- 设置后处理着色器,将屏幕外缓冲区的纹理作为统一参数传递
绘制全屏四边形
显示主机缓冲区的内容
问题是,通过将纹理渲染到屏幕外缓冲区并将结果用作 2D 四边形的纹理,我丢失了深度信息,整个场景看起来并不真实。
所以我的问题是,如何将我的深度缓冲区合并到帧缓冲区?或者将模糊或其他片段着色器效果应用于复杂 3D 场景的常用方法是什么?