2010-05-05 79 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); 

让我知道!