2015-04-02 66 views
1

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

但是,这超出了我所知的是当多重采样被引入时.FBO必须被多重采样。这留下了两种可能性:1.后处理着色器在子样本上运行1:1以生成最终的多重采样屏幕输出,或2.着色器必须解析多个样本并为每个屏幕像素输出一个屏幕片段。这些如何完成?

回答

0

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

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