2010-06-06 29 views
2

我試圖讓OpenGL中的MRT工作來嘗試延遲渲染。據我瞭解,情況如此。檢索GLSL中的FBO數據

  1. 創建3個渲染緩衝區(例如)。兩個RGBA8和一個Depth32。
  2. 創建一個FBO。
  3. 將渲染緩衝區附加到FBO。 ColorAttachment0/1用於顏色緩衝區,DepthAttachment用於深度緩衝區。
  4. 綁定FBO。
  5. 繪製幾何圖形。
  6. 在碎片着色器中使用gl_FragData[]發送數據到不同的附件。

在這一點上,我想在另一個使用GLSL的傳遞中獲取數據,a)如何從framebuffer顏色附件中檢索數據,b)從深度組件獲取數據。

回答

2

你用什麼作爲FBO附件? Renderbuffers?紋理?

您應該使用紋理作爲顏色附件(和深度附件),以便您可以在下一遍中閱讀它們。無法對渲染緩衝區執行相同的操作。

+0

我正在使用renderbuffers(請參閱#3),因爲我從來不會將生成的圖像用作幾何體上的紋理貼圖。我想我會更好地使用紋理作爲附件,而將它們映射到第二遍中的屏幕對齊的四邊形上? – 2010-06-07 16:25:40

+0

是的,紋理是要走的路。 – 2010-06-07 16:59:45