位置: 编程技术 - 正文

Android着色器Shader介绍(着色器问题)

编辑:rootadmin
Shader

推荐整理分享Android着色器Shader介绍(着色器问题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:着色器选项,shader 着色器,着色器有什么用,着色器设置,着色器选项,着色器影响帧数吗,着色器模型3.0,着色器影响帧数吗,内容如对您有帮助,希望把文章链接给更多的朋友!

Android中绘图时渐变着色需要使用android.graphics.Shader类,该类有几个子类

LinearGradient 线性梯度渐变RadialGradient 环形梯度渐变或者灯光渲染SweepGradient 扫描梯度渐变BitmapShader 图片渲染ComposeShader 组合渲染

下面将依次介绍各个渲染器的用法和效果图。

LinearGradient

LinearGradient有两个构造器,我们先看简单的

该构造器指定一个起点坐标一个终点坐标以及二者的色值,我们先不关心最后的TileMode参数。 先来看一下该渲染器的效果,我将渲染器的范围设定到屏幕的中间处,起点(左上角)颜色为红色,终点(右下角)为绿色,根据渲染算法,中间颜色值应该为0xFF 代码如下1:

这段代码的运行效果是这样的

LinearGradient还有一个构造器是这样的:

该构造器包含一系列颜色以及对应的位置值,如果不提供位置,那么渲染器会均匀分布所提供的几种颜色。 我们可以这么用,这里使用的绘图范围和上面一致,不在赘述:

效果是这样的

如果再加一组位置初始化LinearGradient,如下(为了显示效果更明显,我把修改了渲染器的方向为垂直的):

下面是效果图,从效果图上可以看到红,黄,绿三种颜色比较靠上,在我们提供的位置处。

RadialGradient

环形梯度着色,又叫光束渲染。 同样的,RadialGradient有两个构造器,我们先看简单的:

该方法要求一个圆心坐标、半径,圆心色值以及圆环色值。 下面演示一下这个着色器的用法和效果,我使用白色和透明色作为起始色值和边界色值,这是一个灯光的效果,为了更明显写,我把窗帘拉上了。

我们这里定义的圆心在屏幕中间,直径为屏幕宽度,效果是这样的,很像一个点光源照射的效果:

另一个构造器和LinearGradient类似,需要一组色值和对应的一组位置,就不赘述了,直接贴代码:

圆心位置和半径使用上例中的定义。这段代码展示的效果是这样的,四种颜色在指定位置过渡: 作为对比,我们看一下不带位置参数的效果图: 代码片段:

SweepGradient

扫描着色,其效果好像雷达扫描。 同上面两个着色器类似,该类也有两个构造器,不同的是,该类的构造器不需要TileMode参数。 第一个构造器:

这个构造器看起来比较简单,仅需要一个圆心坐标和一组色值,我们来看一下它的使用方法和效果

Android着色器Shader介绍(着色器问题)

同样的,我这里使用屏幕中心作为圆心,效果图是这样子的

上图的扫描渲染在起始线(终止线)上的效果不尽如人意,要想颜色在该线上平缓的过渡,至少需要定义有三个值的数组。幸运的是SweepGradient提供了这样一个构造器:

这里我们走远一些,看看六种色值绘出的效果(因为第一个色值和最后的色值要相同,所以数组的长度是7)

效果图是这样的:

构造带位置参数的扫描着色器,效果和上面的两个着色器类似,我们只看一下效果图吧,我使用如下参数初始化着色器:

BitmapShader

图片渲染器 图片渲染器只有一个构造器:

我们提供一个位图和纵向横向的TileMode就行了。讲到这里,也该提一下所谓TileMode是什么了。 TileMode意义过来就是平铺模式,指的是在着色器范围之外的部分使用什么颜色进行着色,TileMode定义了三种模式:

CLAMP 使用边界颜色着色REPEAT 重复着色器效果MIRROR 镜像重复使用着色器效果

语言表达不如图片更清楚,下面我们看一下TileMode是如何起作用的。如下使用图片渲染器:

这段代码绘制出的效果是这样的: 从该图中我们可以清楚看到TileMode的作用方式。

CLAMP的着色方式就比较有意思使用了,我们仍然使用上面的代码,但是下面的参数初始化构造器:

效果是这样的:

注意图片渲染器的顶部向上的扩展是不正常的,这大概是图片渲染器的bug吧。

TileMode

上面使用图片渲染的时候解释了几种TileMode的效果,同样的,在LinearGradient中,这几种模式的效果我们可以想象,不过值得一提的是在RadialGradient中的效果是这样的,贴图供参考: MIRROR模式效果:

REPEAT模式效果:

ComposeShader

最后提一下,Shader类还有一个子类叫ComposeShader,故名思议,该着色器是由两个着色器组合而来的。 由于组合着色器涉及到了颜色叠加算法,这里不做讨论。 ComposeShader的使用需要开启软件渲染:

如果不开启软件渲染,组合着色器将没有效果,不过有时候我们可以使用叠加绘制的方式来模拟组合着色器,比如下图就是先绘制了一个扫描着色器,再绘制了一次带透明度的环形着色器

参考:AndroidCircleColorPicker

CyanFlxy原创,转载请注明出处

实际绘图的时候不要在onDraw中进行对象的创建,因为该方法会频繁的调用,应该在其他位置中将用到的对象初始化好 ↩

版权声明:本文为博主原创文章,未经博主允许不得转载。

android 一个很漂亮的控件ObservableScrollView(含片段代码和源码) 转自:

打开app后Edittext自动获取焦点并弹出输入法的方法 方法1.:调用代码://自动弹出键盘InputMethodManagerinputManager=(InputMethodManager)getApplication().getSystemService(Context.INPUT_METHOD_SERVICE);inputManager.toggleSoftInput(0,InputMet

Android照片墙完整版,完美结合LruCache和DiskLruCache 转载请注明出处:

标签: 着色器问题

本文链接地址:https://www.jiuchutong.com/biancheng/370976.html 转载请保留说明!

上一篇:android 为viewPager增加动画切换效果(android viewpager)

下一篇:打开app后Edittext自动获取焦点并弹出输入法的方法(edit apps)

  • 什么是消费税的计税销售额?价外费用是什么?
  • 企业分红缴纳所得税
  • 个人所得税是什么意思有什么用
  • 增值税进项税额转出是什么意思
  • 房产税和车船税计入应交税费吗
  • 公司的个人所得税是多少
  • 土地增值税清算方法与技巧
  • 企业所得税季初和季末
  • 开咨询费需要合同吗
  • 员工加班餐费计入会计什么科目
  • 个体户4年不注销的后果消
  • 个人代开普票需要交个人所得税吗
  • 存货占营业收入的意义
  • 如何合理把公司的钱拿出来
  • 销售已计提完折旧的固定资产
  • 收到服务费发票摘要怎么写
  • 土地使用费怎么申报
  • 建筑劳务公司的工资计入什么科目
  • 没有进货发票怎么处罚
  • 投资性房地产收入属于什么收入
  • 通行费如何填报表二
  • 软件企业所得税两免三减半
  • 公司购买茶叶应计入哪里
  • 公司没有残疾人需要缴纳残保金吗
  • 红字信息表跨越可以撤销吗
  • 已抵扣原材料进项税额转出完整分录
  • 发票金额与实际付款金额不一致
  • 预存电费余额是什么意思
  • vue3如何
  • 企业增值税征收范围包括
  • 对公账户存款利息要交增值税吗
  • 公司从其他公司买一个项目花了100万
  • 苹果推送最新系统怎么弄
  • 公司为实习生买保险列支什么科目?
  • 电竞显示器怎么调整参数
  • 出口退税运费的账务处理
  • 会计人员填制的记账凭证并不是登记账簿的唯一依据
  • 职工福利费会计科目怎么写
  • php对接微信支付教程
  • laravel 实例
  • 内部结算属于什么科目类别
  • 帝国cms移动端
  • 小规模所得税申报表利润总额是填季报吗
  • 如何修改php网页内容
  • 子公司吸收合并母公司 特殊性税务处理
  • 广告公司纳税人类型
  • 物业公司物业费税率是多少
  • 走账的目的
  • 已计提的城建税有误,怎么办
  • 发行股票的账务处理
  • 电子商业汇票怎么接收
  • 小规模公司购买水泥怎么入账
  • 土地出让金返还比例是多少
  • 长期待摊费用属于资产类吗
  • 库存商品差额调整会计目录
  • 出让价格不得低于基准地价
  • 自产自销的免税票
  • 私人公司盈利怎么把钱拿出来
  • mysql安装时出现的问题
  • mysql 指定my.cnf
  • ubuntu安装chia
  • window预览
  • 修改windows版本
  • window资源管理器
  • win10开机自动启动软件怎么设置
  • windows8.1安装windows7
  • win10系统如何屏蔽弹窗广告
  • 微软为什么这么贵
  • win10 mobile 1709
  • linux安装jdk和tomcat
  • jqueryon事件
  • css模糊滤镜
  • android开源项目在哪找
  • u3d unity3d
  • unity导出ios项目到iphone
  • 使用jQuery制作动画与特效及插件的应用
  • 河南的省直
  • 河北税务局是干嘛的
  • 税务总局绩效管理四大板块
  • 新疆喀什泽普县海拔高度是多少米
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设