2014-07-22 20 views
0

我在每個幀中混合了我以前的5個渲染,具有5個渲染目標在同一個FBO中。在每個幀I結合OpenGL融合之前的N個渲染而不使用N個目標

base_target + frame%5 

和在片段着色器我經過所有紋理從base_target到base_target + 4,總結起來,並顯示結果。它工作正常,但我想混合更多,如10。問題是,渲染目標的最大數量是8.

有沒有辦法解決這個問題?我能否擁有一個渲染目標,實際上它是一個具有大量元素的紋理數組,然後在每次迭代時選擇要渲染的紋理中的哪個紋理?

+0

你有沒有想過使用紋理數組? – Nobody

+0

這就是我在想的,但我只是從他們那裏讀取的,我從來沒有用它們作爲渲染目標。你能告訴我關於如何將紋理數組添加到fbo並渲染到數組中的特定紋理(然後切換到下一幀的下一個紋理)的示例代碼? – tigeradol

+0

我不知道我明白你想要什麼,但我可以給你這個指向[分層渲染](http://www.opengl.org/wiki/Framebuffer_Object#Layered_Images)的指針。 – Nobody

回答

1

其實這是隻有三個渲染所需的目標:

  • 1 RT是一個積累的緩衝區。
  • 第二個RT是CURRENT幀緩衝區。
  • 第三RT是TEMPORARY緩衝區。

算法:

  1. 渲染當前幀分成CURRENT RT。
  2. 將累積RT與CURRENT RT混合並將結果放入TEMPORARY RT。
  3. 交換累積RT和臨時RT。
  4. 存在累積RT。