Android上的硬件层和硬件加速

马克西姆·德米特里耶夫(Maxim Dmitriev)

我刚刚阅读了有关硬件加速的内容,并观看了该视频。现在我有点困惑。

硬件加速意味着绘图操作由GPU执行,并且默认情况下在Android 3.0+上启用。如果启用了硬件加速,为什么默认情况下View的图层类型为LAYER_TYPE_NONE我认为应该是LAYER_TYPE_HARDWARE

硬件层必须做一些事情来保持View屏幕外的缓冲区。

因此,它看起来像常量View.LAYER_TYPE_NONE,,View.LAYER_TYPE_HARDWAREView.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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章