我在這裏是因爲我正在開發一個OpenGL程序,並且我遇到了一些性能問題。我在iMX6 soc上使用OpenGL ES 3.0。Open gl es如何提高性能,渲染紋理,混合
這裏是我的算法:
我從相機被直接映射到紋理獲取的圖像。 使用FBO,我渲染到紋理以映射特定窗體上的圖像。
我做其通過另一應用程序通過共享存儲器發送用於另一圖像同樣的事情(與第二FBO)。僅當圖像更新時才執行此步驟。每秒只有一次。
我在默認幀緩衝器混合這兩種紋理渲染結果到屏幕上。
如果我分別執行這三個步驟,它運行良好,屏幕更新爲30FPS。但是當我在一個程序中包含三步時,渲染速度非常慢,而且我只有0.5FPS。
我想知道如果在iMX6的GPU是足夠強大,但我認爲這不是一個複雜的算法。我想我正在做一些錯誤的事情,但是什麼? 我使用3個不同的幀緩衝區,所以這是一個好方法,或者我應該只使用一個?
能有人給我解答,線索,凡是能幫助我嗎? :-)
我的圖像尺寸爲1280×1024 X RGBA。然後,我正在做一些從浮點紋理到整數的轉換,然後返回到浮點,這是爲了對像素執行按位運算。
「然後,我正在做一些從浮點紋理到整數的轉換,然後返回到浮點,這是爲了對像素執行按位運算。」我的直覺是,這是一個緩慢的位。如果你做一個更簡單的混合作爲測試(例如輸出兩個圖像的平均值),會發生什麼? – Columbo
感謝您的回答,我現在無法嘗試,但我會盡快完成。使用浮點紋理還是整數或甚至標準化的整數更好? (爲了更好的性能) – Ango742
一些實際的代碼和着色器會有所幫助 - 很難提供基於相當蓬鬆的描述的具體建議... – solidpixel