我刚刚阅读了有关硬件加速的内容,并观看了该视频。现在我有点困惑。
硬件加速意味着绘图操作由GPU执行,并且默认情况下在Android 3.0+上启用。如果启用了硬件加速,为什么默认情况下View
的图层类型为LAYER_TYPE_NONE?我认为应该是LAYER_TYPE_HARDWARE。
硬件层必须做一些事情来保持View
屏幕外的缓冲区。
因此,它看起来像常量View.LAYER_TYPE_NONE
,,View.LAYER_TYPE_HARDWARE
与View.LAYER_TYPE_SOFTWARE
硬件加速无关。它们是关于将其保留View
在屏幕外缓冲区中,以避免在每次View
透明度和其他一些属性更改时进行绘制。
View.LAYER_TYPE_HARDWARE
意味着视图将由硬件层(例如纹理,FBO)支持。因此,无需重新绘制视图即可轻松/几乎自由地应用颜色效果,半透明和其他GPU效果。当视图具有这种效果时或在对其进行动画处理之前,最好启用硬件层。硬件层虽然占用大量RAM,所以要小心。
此处的文档:LAYER_TYPE_HARDWARE及其引用:
指示视图具有硬件层。硬件层由特定于硬件的纹理(通常是OpenGL硬件上的帧缓冲区对象或FBO)作为后盾,并导致使用Android的硬件渲染管道渲染视图,但前提是必须为视图层次结构打开硬件加速。关闭硬件加速后,硬件层的行为与软件层完全相同。
硬件层可用于将特定的滤色器和/或混合模式和/或半透明应用于视图及其所有子级。
硬件层可用于将复杂的视图树缓存到纹理中,并降低绘制操作的复杂性。例如,在对带有转换的复杂视图树进行动画处理时,可以使用硬件层仅渲染一次视图树。
将旋转变换应用于视图时,硬件层也可以用于提高渲染质量。在视图上应用3D变换时,也可以用来防止潜在的裁剪问题。
编辑:要回答您的问题,默认情况下该层为NONE,因此它不占用RAM。硬件加速绘图和硬件层是两个不同的东西。硬件加速绘制意味着绘制命令(例如,绘制Canvas
为时)由GPU而不是CPU完成。硬件层意味着绘图结果保存到GPU的内存中,因此以后可以显示结果(例如纹理),而不必再次重新绘制视图。
编辑2:第一次编辑是我自己的,但是编辑时我退出了SO:D
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句