public static Texture2D Copy(this Texture2D source, TextureFormat format = TextureFormat.RGBA32, CopyFilterMode filter = CopyFilterMode.Source) { if (source == null) { return(null); } Texture2D result = new Texture2D(source.width, source.height, format, false); result.name = source.name; switch (filter) { case CopyFilterMode.Source: result.filterMode = source.filterMode; break; case CopyFilterMode.Point: result.filterMode = FilterMode.Point; break; case CopyFilterMode.Bilinear: result.filterMode = FilterMode.Bilinear; break; case CopyFilterMode.Trilinear: result.filterMode = FilterMode.Trilinear; break; } Color32[] pixels = source.GetPixels32(); if (pixels != null) { result.SetPixels32(source.GetPixels32()); result.Apply(); } return(result); }
public static Texture2D Crop(this Texture2D source, Rect area, TextureFormat format = TextureFormat.RGBA32, CopyFilterMode filter = CopyFilterMode.Source) { if (source == null) { return(null); } int top = (int)area.yMin; int left = (int)area.xMin; int width = (int)area.width; int height = (int)area.height; Texture2D result = new Texture2D(width, height, format, false); result.name = source.name; switch (filter) { case CopyFilterMode.Source: result.filterMode = source.filterMode; break; case CopyFilterMode.Point: result.filterMode = FilterMode.Point; break; case CopyFilterMode.Bilinear: result.filterMode = FilterMode.Bilinear; break; case CopyFilterMode.Trilinear: result.filterMode = FilterMode.Trilinear; break; } Color[] pixels = source.GetPixels(left, top, width, height); if (pixels != null) { result.SetPixels(pixels); result.Apply(); } return(result); }