2010-05-05 81 views
0

我有一個Android應用程序,使用OpenGL ES顯示VGA(640x480)幀。該應用程序從電影文件中讀取每個幀並相應地更新紋理。爲什麼OpenGL ES紋理映射非常慢?

我的問題是,它需要將近30毫秒。使用OpenGL繪製每個幀。使用Canvas/drawBitmap的類似測試在同一臺設備上大約爲6 ms。

我跟着VLC媒體播放器正在使用的OpenGL調用,所以我假設這些都是爲此目的進行了優化。

我只是想聽聽你的想法和想法嗎?

+1

您是否有任何關於視頻幀 - >紋理與將紋理渲染到多邊形之間的時間分解的想法?我懷疑大部分的成本是視頻解壓。如果你只是一遍又一遍地繪製同一幀,它是否會改變所花費的時間? – 2010-05-05 23:19:54

回答

0

你正在使用哪些呼叫? 請確保您只創建紋理一次(glTexImage2D),並且下一次只需使用新的緩衝區更新它。您還可以禁用其他gl事物,如深度緩衝區,模板,堆積,照明等...... 如果這些都不起作用,請檢查你的opengl實現。請確保使用硬件(GPU)

0

你確定的位圖的加載RBG_565試試這個:

BitmapFactory.Options opt = new BitmapFactory.Options(); 
opt.inPreferredConfig = Bitmap.Config.RGB_565; 
bm = BitmapFactory.decodeByteArray(temp, 0, temp.length,opt); 

讓我知道!