android - Android 上的 OpenGL 是电池 killer 吗?

标签 android opengl-es surfaceview battery

我目前正在实现一个软件键盘(使用一些复杂的预测),并且使用 Canvas 绘制它在性能方面是不够的。我得到的帧绘制时间远远超过 100 毫秒,这显然是 Not Acceptable 。

键盘本身由大约 33 个键组成,每个键都是使用 drawRoundRect 和上面的简单 Text 绘制的。没有使用任何小部件,所以它是普通的性能。此外,几乎所有 Google 的性能提示都在使用,所以这也不是速度的原因。

我现在已经到了切换到 opengl 实际上有意义的地步,但考虑到基于 opengl 的键盘可能对电池生命周期的影响,我仍然持怀疑态度。

由于我找不到关于该主题的足够文档,我希望这里有人能为我指明正确的方向。

最佳答案

不管它会消耗多少电池电量,您可能都不想这样做,因为大多数现有设备不支持同时使用多个 OpenGL 上下文,因此您的软键盘将与正在使用的任何应用程序不兼容OpenGL 用于自己的绘图。在这些设备上,OpenGL 上下文仅由前台应用程序拥有;它不能像软键盘一样用于 UI 的次要部分。

另外,正如之前的发帖者所说,您最好还是看看如何优化您的常规绘图。绘制矢量非常慢,因此将它们预渲染到位图中以仅执行位图 blits 会有很大帮助。还要注意只绘制窗口发生变化的部分。 100 毫秒是绘制 UI 所花费的相当多的疯狂时间,因此几乎可以肯定您可以进行重大优化。您可能想查看平台中的 KeyboardView 代码(由标准软键盘和示例 IME 使用);这已经包含许多类似的绘图优化。

关于android - Android 上的 OpenGL 是电池 killer 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1961701/

相关文章:

javascript - 尝试让 webGL (2d) 绘图工作。看不到我的三 Angular 形

android - 为什么onSurfaceView onTouchEvent()返回true?

android - 从另一个 Activity 返回时 SurfaceView 崩溃

android - 读取 webview 小部件的 HTML 内容

android - 保护 Sails API

java - 如何使用蓝牙模块 HC-05 从 Arduino-uno 发送数据并在 Android 中读取?

使用 SurfaceView 的 Android gameLoop;快速更换相机 'shots' 会导致黑色闪光等

android - Xamarin, ImageView 问题

opengl-es - gl_Color 是 WebGL 上未声明的标识符

opengl-es - 如何在左轴和右轴之间转换opengl投影矩阵?