java - Canvas 绘制速度太慢

标签 java android opengl-es canvas ondraw

我正在开发一款允许逐步浏览视频帧(位图)的应用程序。它还能够逐帧播放帧,就好像您实际上正在观看由帧组成的视频一样。

我有一个 ImageView,一次显示一个位图。我遇到的问题是将图像绘制到 ImageView(我们说的只是对 super.onDraw() 的调用)大约需要 30 毫秒。由于帧需要以其原始帧速率播放,因此这是一个问题。还有其他操作也在减慢流程,但绘图肯定无济于事。

我正在研究 OpenGL ES,但似乎并非所有设备都支持非二次方图像,因此这行不通。图像的尺寸是设备录制的视频分辨率的一半,因为我以一半大小对它们进行采样,这几乎可以保证永远不会是二次方图像。

有什么方法可以加快绘图速度吗?

最佳答案

OpenGL ES 2.0 强加了对两个纹理的非幂的支持,因此您可以放心使用它。如果您使用 OpenGL ES 1.0 并且您没有二次幂支持,则很容易解决它(只需创建一个足够大的二次幂纹理来包含您的 npot 图像。)

注意:您应该分析您的应用,看看是否可以使用 Canvas 提高速度。也许您在绘制时缩小了图像的比例,也许它不在兼容的配置中并且转换发生在运行时(例如 565 到 8888)等。

关于java - Canvas 绘制速度太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6522541/

相关文章:

java - 在JAVA中存储键值对的最佳实践

android - 向 requestLocationUpdates intentService 发送额外信息会中断位置更新

android - 如何在 Android 中将 ZXing api 与前置摄像头集成?

渲染多个对象时 iOS OpenGLES 奇怪的行为

javascript - WebGL 错误 : ArrayBuffer not big enough for request in case of gl. 亮度

java - 为什么我的 POST 到 Sagepay 会返回错误 400?

Java 通过循环与类对象进行通信时遇到困难

java - JDBC 返回空结果集,但记录存在于数据库中

java - TextView暂时不刷新

android - QVideoFrame::map() 崩溃