从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章主要介绍Unity中如何实现Texture,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联主营兴宾网站建设的网络公司,主营网站建设方案,app软件定制开发,兴宾h5小程序设计搭建,兴宾网站营销推广欢迎兴宾等地区企业咨询
如上图,Texture2D是一张二维图片
是由一颗一颗像素组成的。
通常是由低到高,由左到右排列的。
如果想要通过代码操作像素,我们必须要知道像素的坐标位置,现在我们来验证下是否真的如此排列。
我们通过简短的代码,NEW一个图片,并且根据X,Y轴对应R,G通道,逐像素赋值。我们将得到一张红绿渐变图,如下。
根据图片的颜色渐变过程,我们可以确信,像素排列顺序是和我们预测的一样。
TextureFormat是什么
TextureFormat为贴图的类型,ARGB32位,代表有ARGB4个通道,每个通道的颜色有8位,对应的还有A8,RGB24等。任何图片从本质上就是这样的。
而常见的JPG,PNG等是操作系统采用的压缩/非压缩读取格式,ETC/DDS为图形接口读取的压缩格式。
赋值完后为什么要Apply
因为在贴图更改像素时并不是直接对现在的内存进行更改,而是在另外一个内存空间中更改,这时候GPU还会实时读取旧的贴图位置。
当Apply后,更改后的内容才会应用到现在的内存中。
所有的图片的像素排列顺序都一样吗?
事实上OpenGL和DX在UV方向和取值上是不同的,在此我们应该感谢Unity3D为我们做的那些事,让一切变得简单。
我们对上面的代码稍作修改。
我们在第一个红线引入一张贴图,第二个红线,将像素乘以这张贴图对应位置的alpha通道。
在色阶上每个通道是8位,0-255,但在计算时为浮点数。0~1。
所以如果alpha为0,任何颜色乘以他,结果都为0。
通过以上代码,我们实现如下效果:
这张贴图是张Alpha通道为0和1的通道,1为有颜色,0自然就没有颜色。也可以通过0-1之间的值实现渐变。
同样的,因为只用到一个通道,我们可以将它压缩为一张Alpha8的单通道8位贴图,来节省空间。
我们再次对上述代码进行更改,同样引入一张贴图来做纹理。
这次我们进行颜色相乘,因为颜色为浮点值,所以他们乘后的结果不会大于1,也不会小于0。
而重载运算符,在*的过程中,帮我们把RGBA通道一一对应的运算。
这里我们用到了相乘,很多人在用图像软件时,会遇到,相乘,相加,相除,相减等词汇。
一开始会很纳闷,为什么要这样命名。现在我们知道了,他们是在像素之间的数学运算关系。
以上是“Unity中如何实现Texture”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图