tex | 要转换的纹理。 |
flags | 用于控制压缩和输出格式的标志。默认值为 Texture2D.EXRFlags.None |
将此纹理编码为 EXR 格式。
此函数返回一个字节数组,该数组是 EXR 文件数据。您可以将编码后的数据存储为文件或将其发送到网络,无需进一步处理。
此函数不适用于任何压缩格式。虽然最好将此函数用于 HDR 纹理格式(16 位或 32 位浮点数),但它可以用于其他格式(数据会动态转换)。默认输出格式为未压缩的 16 位浮点数 EXR,可以使用传入的标志进行控制。对于传入的纹理,Texture.isReadable 必须为 true
。只有当传入的格式包含 alpha 通道时,编码后的 EXR 数据才会包含 alpha 通道。对于单通道红色纹理(R8
、R16
、RFloat
和 RHalf
),编码后的数据将为灰度模式。
其他资源: EXRFlags、EncodeToJPG、EncodeToPNG。
// 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 = ImageConversion.EncodeToEXR(tex, Texture2D.EXRFlags.CompressZIP); File.WriteAllBytes(Application.dataPath + "/../SavedRenderTexture.exr", bytes);
Object.DestroyImmediate(tex); } } }