2012-11-13 35 views
1

我開發一個應用程序,並在相機預覽流在GPU(OpengGL ES 2.0)的現場篩選。它類似於着名的應用程序「紙相機」(付費)和「卡通相機」(免費)。Android攝像頭過濾器上的Tegra GPU的慢,但快於其他

它適用於我的銀河S2罰款和相當快,在一個S3更快,確定在舊的三星設備。我也在索尼Xperia Arc S和HTC的願望以及其他幾個我不記得的設備上測試過它,它不像我的S2那麼快,但至少超過10 fps。

現在這裏的問題: 昨天我能夠在HTC One X +和Galaxy Tab 10.1(分別是tegra 3和tegra 2)上進行測試。在一個x +上,它以大約5 fps的速度運行,在平板上以大約2 fps的速度運行。

我還嘗試了前面提到的類似應用程序(紙質相機和卡通相機),它們與我的銀河系s2相比運行速度相當慢,即使它們由於更好的硬件而運行得更快。

有Tegra的GPU的質地有關上傳速度(我要創建一個紋理每個視頻幀)或別的東西能夠降低速度這麼多的任何已知問題?

PS:減少相機預覽分辨率使得它稍快,但它仍然煩人緩慢。

+0

你在使用頂點着色器嗎? – mbeckish

+0

我使用片段着色爲每像素操作,但當然我用頂點着色我varyings(頂點位置和9層的UV爲一個3x3卷積居委會)的計算 –

+0

那麼這或許可以解釋爲什麼它是Tegra的圖形處理器速度慢:http://stackoverflow.com/a/8808807/21727 – mbeckish

回答

1

也許問題是在片段着色器本身,我已經工作了很多具有不同GPU的着色器,我已經有百達發現,沒有一個更快的GPU意味着着色器更快的解釋。 你在片段着色器('if'條件)中使用了很多分支,還是調用了着色器中的其他函數?如果是這樣,那麼你應該儘量避免分支,也可以將代碼的功能合併爲一個,並測試GLSL內置函數,這些函數可能是當前GPU驅動程序實現的bug,然後編寫自己的替代品。

+0

有同樣的問題我懷疑分支是原因。雖然我知道它不支持它(對於具有動態計數的循環將無法編譯),但使用hsv與rgb和rgb進行hsv轉換(使用大量分支)的着色器之間沒有太大區別。可能是緩慢的紋理上傳或緩慢的預覽幀交付。 –

+0

你有任何測試版或應用程序本身已經在市場上?我有一個使用Tegra 3的Nexus 7,我會檢查它的速度。 – PerracoLabs

+0

感謝您的提議,但我們目前的版本會在沒有後置攝像頭的設備上崩潰...需要儘快修復 –