Android图形---硬件加速(Hardware Acceleration)(三)

本文列举了在Android系统中不被硬件加速支持的Canvas和Paint操作,并解释了部分操作在开启硬件加速后的行为变化。此外,还介绍了如何针对受影响的应用程序部分关闭硬件加速的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不被硬件加速所支持的绘图操作

在硬件加速的时候,2D渲染管道支持大多数的通常用于Canvas的绘图操作,以及一些很少使用的操作。被用于渲染应用程序的所有的绘图操作都有发送给Android系统,默认的Widget和布局,以及一些常用的可视效果,如反射和瓷砖的纹理效果都是被支持的。以下列出了已知的不支持硬件加速的操作:

1.Canvas

chipPath()

chipRegion()

drawPicture()

drawPosText()

drawTextOnPath()

drawVertives()

2.Paint

setLinearText()

setMaskFilter()

setRasterizer()

另外,还有一些操作行为会因启用了硬件加速而不同:

1.Canvas

clipRect():硬件加速会忽略XOR、Difference和ReverseDifference三种剪辑模式,3D变换不适用于剪辑矩形。

drawBitmapMesh():硬件加速会忽略颜色数组。

drawLines():硬件加速不支持抗锯齿处理。

setDrawFilter():硬件加速能够被设置,但是会被忽略。

2.Paint

setDither():硬件加速会忽略其设置。

setFilterBitmap():位图过滤是始终打开的。

setShadowLayer():该项设置只对文本有效。

3.ComposeShader

ComposeShader对象只能包含不同类型的着色器(例如,BitmapShader和LinearGradient,但是不能够包含两个BitmapShader对象的实例)。

ComposeShader对象不能够包含一个ComposeShader对象。

如果应用程序受到这些错误的功能或限制的影响,那么能够通过调用setLayerType(View.LAYER_TYPE_SOFTWARE, null)方法针对应用程序受到影响的部分来关闭硬件加速。这种方法,依然还能够在其他的地方利用硬件加速。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值