版本:Unity 6 (6000.0)
语言英语
  • C#

Texture3D.CopyPixels

建议变更

成功!

感谢您帮助我们提升 Unity 文档的质量。尽管我们无法接受所有的提交信息,但我们会阅读所有用户建议的变更内容,并在适用时更新文档。

关闭

提交失败

由于某些原因,您建议的变更无法提交。请于几分钟后再<a>重试</a>。感谢您抽出时间帮助我们提升 Unity 文档的质量。

关闭

取消

切换到手册

声明

public void CopyPixels(Texture src);

声明

public void CopyPixels(Texture src, int srcElement, int srcMip, int dstElement, int dstMip);

声明

public void CopyPixels(Texture src, int srcElement, int srcMip, int srcX, int srcY, int srcWidth, int srcHeight, int dstElement, int dstMip, int dstX, int dstY);

参数

src 源纹理。
srcElement 源纹理中要复制的元素。例如,立方体贴图中的CubemapFace或纹理数组中的切片。如果src是 2D 纹理,请将该值设置为0
srcMip 要复制的 Mipmap 层级。范围是从0到源纹理的Texture.mipmapCount。默认值为0
dstElement 此 3D 纹理中要复制到的深度切片。
dstMip 要写入的 Mipmap 层级。范围是从0到此纹理的Texture.mipmapCount。默认值为0
srcX 复制源src的开始 x 坐标。0是纹理的左端。
srcY 复制源src的开始 y 坐标。0是纹理的底端。
srcWidth 复制src的宽度。
srcHeight 复制src的高度。
dstX 复制到的此纹理的 x 坐标。
dstY 将纹理复制到的 y 坐标。

说明

从 CPU 上的另一个纹理复制像素数据。

此方法从源纹理将像素数据复制到此 CPU 上的纹理。对纹理和 src来说,Texture.isReadable 必须为 true,在调用 CopyPixels 后,你必须调用 Apply 将更改的像素上传到 GPU。

Apply 是一种开销较高的操作,因为它会复制纹理中的所有像素,即便你只更改了其中部分像素,所以在你调用它之前,尽可能多地更改像素。如果你只需要在 GPU 上复制像素,Graphics.CopyTexture 使用 GraphicsTexture 参数作为替代方案,会更快。

要使用 CopyPixels,要复制的大小在两个纹理中必须相同。使用基于区域的重载来指定比完整 Mipmap 级别更小的区域。

基于元素的重载不支持 Crunch 压缩纹理格式。对于基于区域的重载,根本不支持压缩纹理格式。如果任一纹理不可读,Unity 会抛出 UnityException,如果 CopyPixels 失败,它会抛出 ArgumentException

其他资源:ApplyGraphics.CopyTextureSetPixels