public static void RenderAgain() { PicFileParam pic = RenderDialog.lastPic; pic.SetFileName(); Render2File(pic); }
void OnGUI() { m_pic.width = EditorGUILayout.IntField("width", m_pic.width); m_pic.height = EditorGUILayout.IntField("height", m_pic.height); m_pic.camera = EditorGUILayout.ObjectField("Camera:", m_pic.camera, typeof(Camera), true) as Camera; // This is an implement of single selected toggle group, by Rick Liu for (int i = 0; i < toggleNames.Length; ++i) { if (EditorGUILayout.ToggleLeft(toggleNames[i], i == curIdx? true: false) && i != curIdx) { curIdx = i; } } m_pic.isPng = curIdx == 0; EditorGUILayout.BeginHorizontal(); m_pic.filePath = EditorGUILayout.TextField("FilePath:", m_pic.filePath); if (GUILayout.Button("Browser", GUILayout.ExpandWidth(false))) { string path = EditorUtility.SaveFilePanel("save file", m_pic.directory, m_fileDefaultName, m_pic.isPng? "png": "jpg"); if (path != "") { m_pic.filePath = path; } } EditorGUILayout.EndHorizontal(); Rect rect = this.position; rect.y = rect.height - 30; rect.x = 0; rect.height = 30; GUILayout.BeginArea(rect); if (GUILayout.Button("Render")) { if (!m_pic.camera) { m_pic.camera = Camera.main; if (m_pic.camera) { Debug.LogWarning("No camera specified, use Camera.main as a default."); } else { Debug.LogError("No camera to use, set one before render"); return; } } Render2Tex.Render2File(m_pic); m_pic.SetFileName(); lastPic = m_pic; Debug.Log("Render Over"); } GUILayout.EndArea(); }
public static void Render2File(PicFileParam pic) { RenderTexture tex = new RenderTexture(pic.width, pic.height, 16); pic.camera.targetTexture = tex; pic.camera.Render(); pic.camera.targetTexture = null; RenderTexture.active = tex; Texture2D tex2D = new Texture2D(pic.width, pic.height); tex2D.ReadPixels(new Rect(0, 0, pic.width, pic.height), 0, 0); byte[] data = pic.isPng? tex2D.EncodeToPNG(): tex2D.EncodeToJPG(); File.WriteAllBytes(pic.filePath, data); }