2016-09-09 26 views
1

我正在處理渲染堆棧,並且必須將我的場景渲染爲具有深度渲染緩衝區的兩個紋理。現在要生成最終場景,我希望將這兩個渲染結合爲平面着色器的平面紋理。不過,我正在努力弄清楚如何使用深度渲染緩衝區來合併兩個紋理,從而使對象的距離保持一致。如何在現代OpenGL中將紋理與深度相結合?

尋找解決方案我發現this,這是一個過時的解決方案,但給了一些見解。任何人都知道如何在現代OpenGL ES 2.0中做到這一點?

回答

0

假設它是不透明幾何體的深度敏感疊加層,並且您擁有的是三維物體的兩個平面,那麼您只需從兩個深度紋理中加載樣本,然後將它們進行比較以選取所需的樣本,然後加載來自「勝利者」的顏色值並將其寫入輸出像素。

...但它聽起來相當昂貴,並沒有真正獲得我們的3D GPU的價值(支持深度/模板測試的GPU的整個點是爲了避免這種混亂),所以不必合併如果有任何範圍可以改變你的管道,那麼兩個通過會更好......

+0

是的,我的想法是使用深度/模板測試的深度信息,但我無法弄清楚如何去做。 –

+1

當寫入主窗口表面時,您不能 - OpenGL ES不允許您以編程方式從着色器修改深度。對於離屏渲染,只需將要使用的深度紋理附加到FBO作爲深度附件,然後就不要清除它。 – solidpixel

+0

好吧,這是有幫助的,但是,我發現我的問題的解決方案,使用着色器中的條件而不是呈現兩個不同的場景。 –