查看: 668|回复: 0
打印 上一主题 下一主题

[其他] Unity3D项目实战笔记:Texture材质的缩放源码 TextureScale

[复制链接]

9903

主题

126

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
53488
精华
316

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2015-11-25 05:49:05 |只看该作者 |倒序浏览
前几天,做一个功能,上传头像。

在项目中,有大头像和小头像这两种格式,故需要用到Texture缩放,我在[color=rgb(85, 85, 85) !important]unity3d官网找了一下,找到了解决方案,非常简单,共享给大家。

原型代码:
message是Android或者IOS拍照后,返回的字符串:64位格式存储的png图片,已经剪裁为300*300了。
byte[] data = Convert.FromBase64String(message);
Texture2D texture = new Texture2D(0, 0);
texture.LoadImage(bytes);
texture.wrapMode = TextureWrapMode.Clamp;

texture 是大图,现在要用小图,如何搞?
尝试1:
Texture2D 自带的Width、Height重新设置大小,然后Apply。
结果编译报错,Width和Height无法动态设置,故这个方案失败。

尝试2:
Texture2D 自带的Resize方法,然后Apply。
结果是获得了要的小图像,但是不是缩放,而是莫名其妙的图片,故这个方案失败。

尝试3(成功):
引入官方解决方案: [url=]TextureScale[/url](含js源码和C#源码)

TextureScale.Bilinear (texture , 100, 100);  //100*100大小
呈现,效果好极了,Cool。

TextScale源码没有细究,应该是用到了矩阵变形等算法,使用这个类库,要注意如下约束:
1 texture可读写
2 ARGB32, RGB24 and Alpha8 textures

转载请注明转自《Unity3D项目实战笔记(7):Texture材质的缩放源码 TextureScale


分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-14 20:37 , Processed in 0.081840 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部