Version: 2017.3
public static byte[] EncodeToEXR (Texture2D tex, Texture2D.EXRFlags flags= Texture2D.EXRFlags.None);

参数

tex 要转换的纹理。
flags 用于控制压缩和输出格式的标志。

描述

将该纹理编码为 EXR 格式。

该函数返回一个字节数组,该数组为 EXR 文件数据。将该数据写入磁盘以获取 EXR 文件格式的数据。

最好将该函数用于 HDR 纹理格式(16 位或 32 位浮点数)。默认输出格式为 16 位浮点 EXR,传递的纹理必须在导入设置中设置了 Is Readable 标志。

编码的 EXR 数据将始终包含 Alpha 通道。

另请参阅:EXRFlagsEncodeToJPGEncodeToPNG

// Saves HDR RenderTexture as an EXR file.
using UnityEngine;
using System.Collections;
using System.IO;

public class SaveRenderTextureToEXR : MonoBehaviour { RenderTexture m_InputTexture;

void SaveRenderTexture() { if (m_InputTexture != null) { int width = m_InputTexture.width; int height = m_InputTexture.height;

Texture2D tex = new Texture2D(width, height, TextureFormat.RGBAFloat, false);

// Read screen contents into the texture Graphics.SetRenderTarget(m_InputTexture); tex.ReadPixels(new Rect(0, 0, width, height), 0, 0); tex.Apply();

// Encode texture into the EXR byte[] bytes = tex.EncodeToEXR(Texture2D.EXRFlags.CompressZIP); File.WriteAllBytes(Application.dataPath + "/../SavedRenderTexture.exr", bytes);

Object.DestroyImmediate(tex); } } }