gpt4 book ai didi

android - 如何提高Android上位图绘制的性能

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:00:47 25 4
gpt4 key购买 nike

我创建了一个基于 FFmpeg 的电影播放器​​。它工作正常。解码速度相当快,在 LG P970(带 Neon 的 Cortex A8)上,我有平均 70 fps 的 640 x 424 分辨率视频流,包括 YUV2RGB 转换。然而,存在一个瓶颈。它在 Canvas 上绘图。

我在native端使用jnigraphics原生库将图片数据填充到位图中,然后在SurfaceView的Canvas上绘制这个位图。这是一种非常简单和常见的方法,但是对于 640 x 424 分辨率的位图,绘图需要 44 毫秒,这将 fps 降低到 23,使这种技术无法使用......它比整个 A/V 帧解码花费更多!

有没有什么方法可以显着加快绘制位图的速度?我更愿意使用 OpenGLES 2 在 native 代码中完全渲染,但我读过它也可能是 slow .那么现在呢?...

如何尽可能快地渲染位图?

最佳答案

在 GLES1.x 中绘制它们。您不需要使用 GLES2,因为您将没有用处,或者至少在您的问题上下文中没有用处,因为着色器将是使用 GLES2.x 的一般主要原因。因此,为了简单起见,GLES1.x 将是理想的选择。您需要做的就是将字节缓冲区绘制到屏幕上。在我的 Galaxy S(Vibrant)上,这大约需要 3 毫秒。我墙纸中 byte[] 的大小是 800x480x3 或 1152000,这比您正在使用的要大得多。

我相信本指南应该为您指明正确的方向。

http://qdevarena.blogspot.com/2009/02/how-to-load-texture-in-android-opengl.html

至于从 native 代码访问 Canvas 的概念,我会完全避免这种情况,并通过尽可能多地将所有内容卸载到 GPU 来遵循 OpenGL 实现。

关于android - 如何提高Android上位图绘制的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10244509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com