1

我对 OpenGL 相当陌生,并试图弄清楚如何在我的场景渲染中添加后处理阶段。到目前为止,我相信我知道的是我创建了一个 FBO,将场景渲染到该场景,然后我可以使用我的后处理着色器将 FBO 的纹理作为输入渲染到后台缓冲区。

但是,这超出了我的知识范围,是在引入多重采样时。必须对 FBO 进行多重采样。这留下了两种可能性:1. 后处理着色器对子样本进行 1:1 操作以生成最终的多重采样屏幕输出,或者 2. 着色器必须解析多个样本并为每个屏幕像素输出一个屏幕片段。这些怎么做?

4

1 回答 1

0

好吧,通过GL_ARB_texture_multisample 引入的功能(自 GL 3.2 起在核心中)在 GL 中支持选项 1。基本上,这带来了新的多样本纹理类型,以及相应的采样器,例如sampler2DMS,您可以明确地从特定的样本索引中获取。是否可以有效地使用这种方法来实现您的后处理效果,我不知道。

选项2与您描述的有点不同。不是着色器会进行多重采样解析。您可以渲染到多重采样 FBO(不需要纹理,渲染缓冲区也可以)并使用glBlitFramebuffer, 显式解析到另一个非多重采样 FBO(这次使用纹理)。然后可以将此非多重采样纹理用作后处理的输入。后处理和默认帧缓冲区都不需要知道多重采样。

于 2015-04-02T15:11:05.170 回答