| using System.Collections; | 
| using System.Collections.Generic; | 
| using UnityEngine; | 
|   | 
| public class RenderTextureCreator : MonoBehaviour  | 
| { | 
|     [SerializeField] Vector2 m_Size; | 
|     [SerializeField] Camera m_TargetCamera; | 
|     [SerializeField] bool m_Reuse = false; | 
|   | 
|     static Dictionary<Vector2, RenderTexture> m_RenderTexDict = new Dictionary<Vector2, RenderTexture>(); | 
|   | 
|     private void Awake()  | 
|     {  | 
|         if (m_TargetCamera != null && m_TargetCamera.targetTexture == null)  | 
|         {  | 
|             RenderTexture rt;  | 
|             if (m_Reuse && GetRenderTexture(m_Size, out rt))  | 
|             {  | 
|                 m_TargetCamera.targetTexture = rt;  | 
|                 return;  | 
|             }  | 
|   | 
|             rt = new RenderTexture(Mathf.RoundToInt(m_Size.x), Mathf.RoundToInt(m_Size.y), 16);  | 
|             switch (Application.platform)  | 
|             {  | 
|                 case RuntimePlatform.OSXEditor:  | 
|                 case RuntimePlatform.WindowsEditor:  | 
|                 case RuntimePlatform.WindowsPlayer:  | 
|                     rt.format = RenderTextureFormat.ARGB32;  | 
|                     break;  | 
|                 default:  | 
|                     rt.format = RenderTextureFormat.ARGB4444;  | 
|                     break;  | 
|             }  | 
|   | 
|             rt.useMipMap = false;  | 
|             rt.wrapMode = TextureWrapMode.Clamp;  | 
|             rt.filterMode = FilterMode.Bilinear;  | 
|   | 
|             m_TargetCamera.targetTexture = rt;  | 
|   | 
|             if (!m_RenderTexDict.ContainsKey(m_Size))  | 
|             {  | 
|                 m_RenderTexDict.Add(m_Size, rt);  | 
|             }  | 
|         }  | 
|   | 
|     } | 
|   | 
|     public static bool GetRenderTexture(Vector2 _Size, out RenderTexture _tex)  | 
|     {  | 
|         return m_RenderTexDict.TryGetValue(_Size, out _tex);  | 
|     } | 
|   | 
| } |