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

CommandBuffer.ConvertTexture

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

声明

public void ConvertTexture(Rendering.RenderTargetIdentifier src, Rendering.RenderTargetIdentifier dst);

声明

public void ConvertTexture(Rendering.RenderTargetIdentifier src, int srcElement, Rendering.RenderTargetIdentifier dst, int dstElement);

参数

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

描述

添加一个命令来复制一个纹理中的像素数据,将数据转换为不同的格式,并将其复制到另一个纹理中。

此方法添加一个命令,用于在 GPU 上将一个纹理的像素数据转换为另一种格式并复制到另一个纹理。

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

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

这意味着在将纹理加载到 Unity 之前转换它可能会更快。或者,如果您可以在渲染纹理中创建 dst,则可以使用 CommandBuffer.Blit 代替。

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

ConvertTexture 不支持以下转换

  • Cubemap 到 Texture2D。
  • 使用 RenderTextures 的转换 - 请改用 CommandBuffer.Blit

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

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

其他资源:CopyTextureSupport