我正在考虑编写一个能够完成大量移动2D图形的应用程序。我对标准的android 2D图形API不太熟悉,而且我对OpenGL更加熟悉,所以我自然而然地考虑使用OpenGL。
我现在考虑的是,如果我确保降低帧速率并且不进行任何连续更新,除非我需要动画内容,使用OpenGL ES与标准相比,功耗/电池寿命是否存在显着差异图形?
请注意,我没有制作游戏,除了动画制作UI元素外,我不需要连续更新。
答案 0 :(得分:5)
大多数设备上的OpenGL-ES利用了设备的GPU,因此可能比非OpenGL-ES显示系统的电池使用率略高,但我相信这是一个可以忽略的差异。通常电池应变考虑因素包括网络或GPS跟踪等区域。对于图形,最小化电池消耗的最佳方法是最小化设备CPU的总体使用。
OpenGL-ES经过优化,可以尽可能高效地进行繁重的图形渲染,并且具有在沙盒外运行的额外优势,Android分配给每个正在运行的应用程序,为其提供更大的内存池,以及访问GPU在您的应用中考虑图形丰富的表现层时使其成为最佳选择。
除了OpenGL-ES之外,你可能要么想要使用Bitmaps&画布或使用View嵌套在ViewGroups中并通过更改其LayoutParams或操纵其矩阵来移动它们,以便为屏幕周围的对象设置动画。与基于OpenGL的平台执行的动画相比,性能方面的动画效果很少令人印象深刻。
另一方面,完全在OpenGL-ES中管理结构化应用程序也可能是一场噩梦。在构建非图形丰富的应用程序时,使用片段和视图始终是首选方法,因为它们使一切变得如此简单,并且它们是为了这个目的而构建和优化的。
最后,它实际上取决于您正在构建的应用程序的要求。您还可以考虑开发某些在OpenGL-ES中具有更高图形要求的片段以及其他不在更常规方法(如片段)中的片段。
电池方面,通过OpenGL-ES使用GPU肯定会有一些开销,但如果你使用传统的动画方法对CPU进行超频,你最终可能会给电池带来更大的压力,甚至会损坏你的应用程序。低帧率的用户体验。