千家信息网

Unity中如何实现Texture

发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,这篇文章主要介绍Unity中如何实现Texture,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!了解Texture2D如上图,Texture2D是一张二维图片是由一颗一颗像素组
千家信息网最后更新 2025年02月07日Unity中如何实现Texture

这篇文章主要介绍Unity中如何实现Texture,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

了解Texture2D

如上图,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"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

像素 通道 颜色 代码 图片 贴图 位置 内存 内容 运算 之间 效果 是在 是由 格式 空间 篇文章 红线 纹理 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 济南市戴尔服务器山东总代 孝感好的软件开发中心 传奇私服服务器自己玩 临沧互联网科技贵不贵 服务器在线管理 notes 数据库已坏 淅川软件开发价格 黑暗之魂3服务器漏洞 希沃白板录播服务器尚未启动 排查数据库修改记录 小学网络安全教育简报百度文库 tsn网络技术的设备 云服务器java代码上传 为什么微信服务器收不到响应 卫星数据库专业 深圳南山的网络技术有限公司 数据库中表的结构由什么构成 加强网络安全青少年应该怎么做 深圳市盛传网络技术有限公司 海淀区智能软件开发服务技术规范 中专网络技术工资 php原生连接数据库语法 dns服务器占用率高是咋回事 网络安全成都样本 云客网络技术有限公司 美国第一银行数据库系统 昌平区综合网络技术服务值得推荐 mysql数据库开源版本 达芬奇恢复数据库初始化失败 网络安全阀基本内容涉及
0