using System; using System.Collections.Generic; using System.Text; using UnityEngine; namespace Thousandto.Core.Base { //RenderTexture处理的类 public class RenderTextureUtils { //创建纹理 -- 按照比例来进行 public static RenderTexture CreateTextureBaseScale(float scale, int d, RenderTextureFormat format) { int w = (int)Math.Round(Screen.width * scale); int h = (int)Math.Round(Screen.height * scale); return CreateTexture(w, h, d, format); } //创建纹理 -- 按照高度来进行 public static RenderTexture CreateTextureBaseHeight(int h, int d, RenderTextureFormat format) { int w = (int)Math.Round(Screen.width * ((float)h / (float)Screen.height)); return CreateTexture(w, h, d, format); } //创建RenderTexture纹理 public static RenderTexture CreateTexture(int w, int h, int d, RenderTextureFormat format) { if (GetSuppertFormat(ref format)) { return RenderTexture.GetTemporary(w, h, d, format); } return null; } //释放RenderTextureTexture public static void ReleaseTexture(RenderTexture tex) { if (tex != null) { RenderTexture.ReleaseTemporary(tex); } } //获取当前支持的格式 public static bool GetSuppertFormat(ref RenderTextureFormat format) { if (SystemInfo.SupportsRenderTextureFormat(format)) { return true; } else if (SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.RGB565)) { format = RenderTextureFormat.RGB565; } else if (SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.ARGB4444)) { format = RenderTextureFormat.ARGB4444; } else if (SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.ARGB1555)) { format = RenderTextureFormat.ARGB1555; } else if (SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.ARGB32)) { format = RenderTextureFormat.ARGB32; } else { return false; } return true; } } }