2009-08-20 37 views
2

我想在OpenGL中渲染兩個場景,然後從一個場景到第二個場景進行視覺交叉淡入淡出。任何人都可以提出一個學習如何做到這一點的起點嗎?OpenGL中的交叉淡入場景

回答

9

你需要學習的最重要的事情是如何做渲染到紋理。

當你有兩個紋理的場景時,它們之間的交叉淡入淡出確實很簡單。事實上,它很簡單,做所有有趣的淡出效果的莊園:)

+0

謝謝,我會研究渲染到紋理。我想到了這一點,但不確定它會對性能產生怎樣的影響。 – BrenMcGuire 2009-08-20 14:49:02

+0

這些天它沒有。沒有它,你將無法做到大多數全屏幕效果。 – Goz 2009-08-20 15:05:01

+1

太糟糕了EXT_framebuffer_object仍然卡在擴展地獄:( – genpfault 2009-08-20 15:22:53

1

這裏的sample code of a cross fade。這似乎與Goz自兩個場景動態化之後有所不同。該示例使用模板緩衝區進行淡入淡出。

+2

事情是。 Rage 128在10年前發佈了,渲染到紋理在那些日子裏效果並不好,渲染場景A到紋理A,渲染場景B到紋理B,然後渲染紋理A和紋理B添加到幀緩衝區,額外的好處是它有一個通用的代碼路徑,它被優化到了地獄,並且提供了各種有趣的效果。你所建議的那種模板緩衝技巧確實很好,但不是大多數開發人員所做的,因此 它雖然工作:) – Goz 2009-08-20 21:34:14

+0

我發現之前的鏈接發佈的問題,但它不是交叉淡入淡出的效果我是looki ng(這不是我所謂的交叉淡入淡出)。 – BrenMcGuire 2009-08-21 11:38:03

0

我可以想出另一種交叉淡入場景的方式,但這取決於場景渲染器的複雜程度。如果很簡單,您可以在渲染完成所需混合效果的第二個場景之前啓動着色器程序。我會嘗試glBlend(GL_ALPHA,GL_ONE_MINUS_SRC_ALPHA)並在着色器中操作片段的alpha值。

FBO是順便說一句。已經有多年了 - 是否延期。如果渲染器複雜且使用着色器程序,則可以將這兩個場景都渲染到FBO並混合這些場景。使用FBO是允許輕鬆應用各種效果渲染的常用技術。