纳金网

标题: Unity3D项目实战笔记:Texture材质的缩放源码 TextureScale [打印本页]

作者: 烟雨    时间: 2015-11-25 05:49
标题: Unity3D项目实战笔记:Texture材质的缩放源码 TextureScale
前几天,做一个功能,上传头像。

在项目中,有大头像和小头像这两种格式,故需要用到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







欢迎光临 纳金网 (http://course.narkii.com/club/) Powered by Discuz! X2.5