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

Graphics.ConvertTexture

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

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

关闭

取消

声明

public static bool ConvertTexture(Texture src, Texture dst);

声明

public static bool ConvertTexture(Texture src, int srcElement, Texture dst, int dstElement);

声明

public static bool ConvertTexture(Rendering.GraphicsTexture src, Rendering.GraphicsTexture dst);

声明

public static bool ConvertTexture(Rendering.GraphicsTexture src, int srcElement, Rendering.GraphicsTexture dst, int dstElement);

参数

src 源纹理。 TextureDimension 必须是 Tex2D 或 Cube。
dst 目标纹理。 TextureDimension 必须是 Tex2D、Tex2DArray、Cube 或 CubeArray。纹理也必须是未压缩的,并且对应于受支持的 RenderTextureFormat
srcElement 要从中复制的源纹理中的元素。如果 src 是 Cubemap,则使用 CubemapFace。如果 src 是 2D 纹理,则将值设置为 0
dstElement 要复制到的源纹理中的元素。例如,Cubemap 中的 CubemapFace 或纹理数组中的切片。如果 `dst` 是 2D 纹理,则将值设置为 0

返回值

bool 如果方法成功,则为 true

描述

将像素数据从一个纹理复制到另一个纹理,并将数据转换为不同的格式。

此方法将像素数据从一个纹理转换为另一种格式,并将其复制到 GPU 上的另一个纹理。

使用 ConvertTexture 时,Unity 会执行以下操作:

  1. 创建一个与 dst 纹理的大小和格式匹配的临时 RenderTexture
  2. 使用 Graphics.Blitsrc 纹理复制到临时渲染纹理,并转换为 dst 的格式。
  3. 使用 Graphics.CopyTexture 将临时渲染纹理复制到 dst 纹理。

这意味着在将纹理加载到 Unity 中之前转换它可能会更快。或者,如果您能够将 dst 创建为渲染纹理(或启用 GraphicsTextureDescriptorFlags.RenderTarget 的图形纹理),则可以使用 Graphics.Blit 代替。

您可以对 srcdst 使用不同大小的纹理。

ConvertTexture 不支持以下转换:

如果您在 MacOS 上使用 OpenGL,则无法使用 ConvertTexture。根据您的图形 API,您可能无法执行某些类型的转换。有关兼容性的更多信息,请参阅 SystemInfo.copyTextureSupportCopyTextureSupportGraphics.CopyTexture

要将转换后的纹理从 GPU 复制到 CPU,请使用 Texture2D.RequestIntoNativeArray。

其他资源:CopyTextureSupport