source | 要读取的视图的矩形区域。将从当前渲染目标读取像素。 |
destX | 纹理中的水平像素位置,用于放置读取的像素。 |
destY | 纹理中的垂直像素位置,用于放置读取的像素。 |
recalculateMipMaps | 读取后是否应重新计算纹理的多级渐进纹理? |
将屏幕像素读取到保存的纹理数据中。
这会将当前处于激活状态的 RenderTexture 或视图(由 source
参数指定)中的矩形像素区域复制到
由 destX
和 destY
定义的位置。两个坐标都使用像素空间 - (0,0) 为左下方。
如果 recalculateMipMaps
设置为 true,则还将更新纹理的 Mip 贴图。如果 recalculateMipMaps
设置为 false,则必须调用 Apply 对其进行重新计算。
当渲染目标具有类似的格式时(例如,通常的 32 或 16 位渲染纹理),该函数适用于 ARGB32
、ARGB32
和 RGB24
纹理格式。
此外,该函数还支持从 HDR 渲染目标(ARGBFloat 或 ARGBHalf 渲染纹理格式)读入 HDR 纹理格式(RGBAFloat 或 RGBAHalf)。
纹理还必须在导入设置中设置了 Read/Write Enabled 标志。
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public bool grab; public Renderer display; void OnPostRender() { if (grab) { Texture2D tex = new Texture2D(128, 128); tex.ReadPixels(new Rect(0, 0, 128, 128), 0, 0); tex.Apply(); display.material.mainTexture = tex; grab = false; } } }
另请参阅:EncodeToPNG。