Version: 2021.1
public static void CopyTexture (Texture src, Texture dst);
public static void CopyTexture (Texture src, int srcElement, int srcMip, Texture dst, int dstElement, int dstMip);
public static void CopyTexture (Texture src, int srcElement, int srcMip, int srcX, int srcY, int srcWidth, int srcHeight, Texture dst, int dstElement, int dstMip, int dstX, int dstY);

参数

src 源纹理。
dst 目标纹理。
srcElement 源纹理元素(立方体贴图面、纹理数组层或 3D 纹理深度切片)。
srcMip 源纹理的 Mipmap 级别。
dstElement 目标纹理元素(立方体贴图面、纹理阵列层或 3D 纹理深度切片)。
dstMip 目标纹理的 Mipmap 级别。
srcX 要复制的源纹理区域(左侧为零)的 X 坐标。
srcY 要复制的源纹理区域(底部为零)的 Y 坐标。
srcWidth 要复制的源纹理区域的宽度。
srcHeight 要复制的源纹理区域的高度。
dstX 目标纹理中的复制目标区域(左侧为零)的 X 坐标。
dstY 目标纹理中的复制目标区域(底部为零)的 Y 坐标。

描述

复制纹理内容。

该函数可在纹理之间高效复制像素数据。 此外,它还可以从元素(例如立方体贴图面)或特定的 Mip 级别以及纹理的子区域进行复制。

复制不进行任何缩放,也就是说,源和目标的大小必须相同。纹理格式应该兼容 (例如,TextureFormat.ARGB32RenderTextureFormat.ARGB32 兼容)。有关格式兼容的确切规则因图形 API 而异; 一般说来,始终可以在完全相同的格式之间进行复制。 在某些平台(例如,D3D11)上,还可以在位宽度相同的格式之间进行复制。

Compressed texture formats add some restrictions to the CopyTexture with a region variant. For example, PVRTC formats are not supported since they are not block-based (for these formats you can only copy whole texture or whole mip level). For block-based formats (e.g. DXT, BCn, ETC), the region size and coordinates must be a multiple of compression block size (4 pixels for DXT).

如果源和目标纹理都标记为“可读”(即系统内存中存在 用于 CPU 读取/写入的数据副本),这些函数也将复制它。

有些平台可能没有全部纹理复制的功能(例如,从渲染纹理 复制到常规纹理中)。请参阅 CopyTextureSupport 并使用 SystemInfo.copyTextureSupport 进行检查。

CopyTexture 之后调用 Texture2D.ApplyTexture2DArray.ApplyTexture3D.Apply 会产生未定义的结果,因为 CopyTexture 以独占方式对 GPU 端数据进行操作,而 Apply 会将数据从 CPU 端传输到 GPU 端。

另请参阅:CopyTextureSupport