使用简单的着色器可以提高性能/电池寿命吗?

我正在做Android的OpenGL游戏。 直到现在我只使用固定的function管道,但我正在渲染简单的事情。

固定的function管道包含了很多我不需要的东西。 所以我正在考虑在我的游戏中实现着色器来简化OpenGL管道,如果它能够提高性能的话。

更好的性能=更好的电池寿命,除非fps受限于软件限制,而不是硬件功率。

除了主题之外,这里还没有一个问题,但改进的性能和改进的电池寿命可能是完全不同的事情。 还有,比起什么改进? 相比于固定function管道? 相比复杂的着色器?

与复杂着色器相比,简单着色器应该提供更高的帧率(假设帧率受GPU吞吐量而不是屏幕刷新率的限制),您可能会考虑更好的性能。 这不一定会延长电池的使用寿命,但仍然可以使用100%的gpu / cpu功率,但是由于每一帧的数量较less,所以帧速率会更高。

与固定function管道相比…谁知道? 现在很多硬件供应商都使用着色器来实现固定functionstream水线,所以你只是再次比较简单的和复杂的着色器。

我没有最新的智能手机功耗数据,但我认为CPU和GPU应该处于同一水平。 纠正我,如果我错了。

一般来说,试图优化依赖性能的代码部分总是一件好事,不仅因为您节省了电池使用时间,而且因为您可以使用硬件function较弱的设备访问设备。 我也一直鼓励人们使用OpenGL ES 2.0 / OpenGL 3.0进行游戏,因为着色器的function就像你说的那样,把努力降到最低,并提供更多的灵活性。

但是,基于你正在渲染一些 2D精灵的假设,我认为GPU大部分处于空闲状态。 这意味着CPU可能会对GPU的电池使用寿命产生更大的影响,所以在这里你不应该期待太正面的结果。 我建议您在优化GPU上的algorithm之前尝试改进在CPU上运行的algorithm,但为了灵活性,我也会使用着色器。 至less如果你可以忽略那些没有支持OpenGL ES 2.0的设备(再次,我没有数字^^)。