纳金网

标题: Texture材质的缩放源码 TextureScale (转载) [打印本页]

作者: may    时间: 2015-11-22 07:26
标题: Texture材质的缩放源码 TextureScale (转载)

前几天,做一个功能,上传头像。
在项目中,有大头像和小头像这两种格式,故需要用到Texture缩放,我在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






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