2015-04-02 67 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(這次使用紋理)。這個非多重採樣紋理然後可以用作後處理的輸入。後處理和默認幀緩衝都不需要知道多重採樣。