android - 在 Android 上使用 OpenGL 绘制全屏单帧动画是否可行?

标签 android animation opengl-es

目前,我正在使用计时器和 Canvas.onDraw()/canvas.drawBitmap 在 SurfaceView 上全屏显示单帧动画。每帧的分辨率为 480x320 像素,并且会在绘制时拉伸(stretch)到屏幕分辨率。这在速度更快的设备上运行良好,可实现高达 15 fps 的帧速率。问题是我必须在动画开始之前加载每一帧(动画由 30 个循环的单帧组成),因为动画将以高帧率显示。鉴于 Android 进程通常只有 16 MB 的小堆空间,我的大多数测试设备都无法将所有 30 帧预加载到内存中,因此我正在考虑改用 OpenGL。当我读到 OpenGL 内存不会被考虑在 16 MB 进程堆空间内时,使用 OpenGL 可能是一种替代方法。

现在我的问题是:OpenGL 是否足够快以足够快地改变和显示纹理(我的单帧)以达到 15fps 的高帧率?我读过一篇文章,说太频繁地交换纹理会显着降低 OpenGL 的速度。你们有这方面的经验吗?如果您已经可以说用 15fps 交换全屏纹理是不可行的,我不想花时间让 OpenGL 运行。

编辑:

我现在使用的是一种使用默认 Android NDK 而不使用 OpenGL 的技术。看我的answer here .

最佳答案

OpenGL 性能还取决于您将使用的设备。但在 15fps 下仅显示 30 个纹理在大多数设备上不会成为问题。

看看this article从 Android 上的 OpenGL 开始。只实现一个循环动画是相当简单的。

祝你好运!

关于android - 在 Android 上使用 OpenGL 绘制全屏单帧动画是否可行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935035/

相关文章:

android - 像 Android 中的信用卡一样的 3D 旋转

android - Perlin 噪声着色器

java - sqlite 数据库未填充且查询不起作用

android - 如何在 Android 4.0+ 中发送带附件的彩信

android - 如何获取 ListView 的选定索引或位置并传递到新的 Activity 中?

javascript - React-Spring - 改变过渡动画速度

android:显示加载屏幕的最快方法

Android Azure 移动服务离线同步软删除

JavaScript 翻转计数器

javascript - 一次显示一个结果,但有延迟