2012-12-15 38 views
0

我正在C++上使用OpenGL渲染圖像,並且想要訪問生成的圖像以對其執行一些更多處理。 (我正在渲染一幅圖像,看起來應該是這樣的實際圖像,並且想要計算兩者之間的像素差異。)訪問渲染的OpenGL圖像

到目前爲止,我只將圖像渲染到屏幕上,而我無法弄清楚如何渲染圖像,然後在繪製的直接像素處訪問。我並不特別在乎是否可以在屏幕上看到圖像,我只需要將圖像渲染到我可以從CPU訪問的某些內存區域。你怎麼做到這一點?

另外,將有可能送它應該像對OpenGL和計算GPU上的像素差的形象呢?任何一種選擇對我都沒有問題,但我可以更快地做得更好。 (現在,我可以使大約每秒100幀,但仍然還沒有想出如何做比較。)

+0

定點功能或可編程管線? – genpfault

+0

@genpfault:這個問題有關係嗎? – Dolda2000

+0

@genpfault我不明白你的意思嗎?我生成的圖像每次都會有所不同。 –

回答

2

是的,你可以在GPU上做到這一點。將2張圖片放入貼圖中。用兩個紋理繪製一個填充四邊形的多紋理紋理,並確保提供紋理座標。編寫片段着色器來計算差異。 (當評論員問,如果你想使用可編程管線,這是它很重要的一個原因。如果你只使用固定功能管線,你不會有寫片段着色器的選項。)

+0

應該注意的是,如果比較功能很簡單,那麼也可以使用固定功能混合來完成。 – Dolda2000

1

最顯而易見的方法是使用glReadPixels在幀緩存到主機內存讀取渲染的結果。