为什么文档建议您减少安卓设备上的透支

  • 本文关键字:透支 文档 android ios performance
  • 更新时间 :
  • 英文 :


建议Android开发人员减少应用程序中的透支。

https://developer.android.com/topic/performance/rendering/overdraw.html

iOS开发者被警告透支,但没有强调。相反,它们可以选择为混合层着色。

https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/MeasuringGraphicsPerformance.html

根据我在iOS上的理解,CoreGraphics将层放入GPU中,GPU在渲染时将它们组合在一起。当像素未混合(alpha通道)时,计算要显示的像素更容易。

导致安卓专注于透支的技术差异是什么?你能提供一个技术参考吗?

我想这主要是由于Painter算法和Z-Buffering之间的差异。

使用前者,可以根据布局从后到后绘制每个视图,并根据需要透支像素。这可能会导致相当多的浪费,因为无论像素是否被遮挡,都需要对其进行渲染。

Z-Buffering可以通过使用Z-Culling来改进这一点,如果层排序正确,可以尽早消除一些像素。

最初,Android使用的是完全基于软件的渲染堆栈,因此Z-Buffering不可用,据我所知,使用了一个简单的Painter's Algorithm。iOS始终基于硬件加速渲染,因此可以利用Z-Buffering(一些)优势。但从安卓3.0开始,安卓也开始实现基于硬件的渲染。

然而,在实践中事情并不是那么简单。首先,使用硬件层和进行深度排序也会产生一些成本,如果像移动应用程序那样处理非常简单的绘图操作(比如简单地绘制位图,而不是3D图形中复杂的基于像素的闪电操作),那么透支像素实际上可能比避免它更便宜。在处理透明度时,事情显然也会变得复杂得多。

我认为Android和iOS都使用了多种技术,因此Overdrive很可能会在这两个平台上出现。在任何情况下,通过避免不必要的重叠来完全避免问题都是一个好主意。

iOS开发者确实被指示避免透支:

当您的应用程序或其内容不可见时,消除绘图;例如,当你的应用程序在后台时,或者当它的内容被其他视图遮挡、剪辑或屏幕外时。

来自您提到的链接。

最新更新