我目前正在實施自動適應暴露在OpenGL與HDR使用。爲此,我需要檢索前一幀中所有像素的平均亮度。在OpenGL
我沒有設法找到了如何做到這一點任何固體解釋。據我所知,有兩種方法可以解決這個問題。
- 使用glReadPixels到幀緩衝區複製到內存,取它們的平均值在CPU上。這可能會非常緩慢,並且不能很好地利用GPU。
- 取幀並使用線性濾波將其渲染爲連續較小的FBO。這讓GPU可以完成大部分工作,但它需要大量的FBO(1080p屏幕大約需要10個FBO)。
有一定是得到平均場景亮度的更好的方法。有沒有人有什麼建議?
如果我生成幀的貼圖我怎麼讀回從程序代碼最小的紋理貼圖像素?在色調映射着色器中對前一幀進行採樣並不是一個真正的選項,因爲紋理已被清除並重用於當前幀。我想在渲染一幀之後讀取程序代碼中的亮度,將其存儲起來,然後在下一幀期間將其作爲統一傳遞給相關的着色器。 – Fibbles
閱讀規範後,我認爲這將與glGetTexImage實現。感謝您的幫助。 – Fibbles