Android 为什么OpenGL ES纹理映射非常慢?

Android 为什么OpenGL ES纹理映射非常慢?,android,opengl-es,Android,Opengl Es,我有一个Android应用程序,它使用OpenGL ES显示VGA(640x480)帧。应用程序从电影文件中读取每个帧,并相应地更新纹理 我的问题是,使用OpenGL绘制每一帧几乎需要30毫秒。在同一台设备上使用Canvas/drawBitmap进行的类似测试大约为6毫秒 我正在遵循VLC Media Player使用的相同OpenGL调用,因此我假设这些调用为此目的进行了优化 我只是想听听你对此的想法和想法?你正在使用哪些电话? 确保只创建一次纹理(GLTEXAGE2D),下次只使用新缓冲区更

我有一个Android应用程序,它使用OpenGL ES显示VGA(640x480)帧。应用程序从电影文件中读取每个帧,并相应地更新纹理

我的问题是,使用OpenGL绘制每一帧几乎需要30毫秒。在同一台设备上使用Canvas/drawBitmap进行的类似测试大约为6毫秒

我正在遵循VLC Media Player使用的相同OpenGL调用,因此我假设这些调用为此目的进行了优化


我只是想听听你对此的想法和想法?

你正在使用哪些电话? 确保只创建一次纹理(GLTEXAGE2D),下次只使用新缓冲区更新纹理。您还可以禁用其他gl功能,如深度缓冲区、模具、累积、照明等。。。
如果这些都没有帮助,请检查opengl实现。确保使用硬件(gpu)

是否确保位图加载了RBG_565?请尝试以下操作:

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

让我知道

您是否知道视频帧->纹理与将纹理渲染到多边形之间的时间细分?我怀疑很大一部分成本是视频解压。如果你只是一次又一次地画同一帧,它会改变你所花的时间吗?