Android之Shader完全理解指南

Shader,中文翻译着色器,老实说,我的专业不是图像处理之类的,所以我也不清楚着色器到底是干嘛的,如果非要我在字面上加以理解,通俗就是给某个机器拿着一只画笔在白纸上画东西,而这个机器就叫着色器,我也不知道这样理解对不对,但是这些概念和东西,都不会影响今天我们要学习的内容,着色器Shader。


概念

Android中的shader,其实基本都是自定义view的时候会用到,而且是将shader赋予给paint,类似这样:

Paint paint = new Paint();
Shader shader = new Shader();
paint.setShader(shader);

但是大家一般不会直接使用Shader,而是使用Shader的子类,Shader的子类有5个,如图:

在讲这些子类之前,我希望大家先理解了shader的实质,然后再去学习这些子类,我想,这样会轻松很多。

shader按照官方的解释是:

Shader is the based class for objects that return horizontal spans of colors during drawing. A subclass of Shader is installed in a Paint calling paint.setShader(shader). After that any object (other than a bitmap) that is drawn with that paint will get its color(s) from the shader.

机翻+我的低水准翻译之后[滑稽.jpg]:

Shader是Object的子类,这些对象在绘制过程中返回颜色的水平跨度。通过Paint.setShader(shader)来使用Shader。调用了该方法后,用该paint绘制的任何对象(bitmap除外)都将从shader获得其颜色。

不是谁都能看懂官方都概念的,在我个人的理解下,我觉得,需要我熟悉一个东西,然后我再看它的概念我才能看的很懂。

我用我的理解方式给大家捋一捋,shader到底是干啥的。

这个时候,我们需要换一种理解方式来理解手机屏幕上面的字,如图:

这幅图上的东西是什么,白底?黑字?再也别这样理解了,现在在学习shader呢,换一种理解方式。

这张图片是由2张大小相同的纸构成的,第一张纸,纯黑色,第二张纸,纯白色的,不过第二张纸不是完整的,中间被扣走了部分,被扣走的部分,刚好看着有点像“演示文字”4个大字。然后将这两张纸重叠后,最终形成了如图所示的效果。

类似这种理解:
在这里插入图片描述
(PS: 不会扣字,只好扣个方框意思一下)

好的,现在我们已经丢掉了传统的思维方式:在白纸上写字。

OK,我现在要来讲shader了,shader其实就和两张纸的思维方式一样,可以这样强行理解shader,shader就是下面那张黑纸,画笔在白纸上画,或者说划?划破白纸,扣出

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值