updateMipmaps | 当值为 true 时,Unity 重新计算 mipmap 级别,使用 mipmap 级别 0 作为源。默认值为 true 。 |
makeNoLongerReadable | 当值为 true 时,在将纹理上传至 GPU 后,Unity 删除 CPU 内存中的纹理并设置 isReadable 为 false 。默认值为 false 。 |
将您在 CPU 纹理中做出的更改复制至 GPU。
对于大多数类型的纹理,Unity 可以将纹理副本存储在 CPU 和 GPU 内存中。
CPU 副本是可选的。如果 CPU 副本存在,您可以比 GPU 副本更灵活地读写 CPU 副本。但是,要渲染更新后的纹理,您必须使用 Apply
将其从 CPU 复制至 GPU。
如果将 makeNoLongerReadable
设置为 true
,Unity 将在将纹理上传到 GPU 后删除 CPU 拷贝。这意味着 Unity 无法重新加载纹理。即使在数据存储在磁盘上的纹理资产上调用 Apply
,一旦 Unity 丢弃了 CPU 拷贝,它也不会再尝试从磁盘重新加载,因为可读纹理数据可能已发生更改。当在项目中使用 Mipmap 限制以减少上传的 Mipmap 数量(例如,QualitySettings.globalTextureMipmapLimit)时,这是相关的。在 Apply
中丢弃 CPU 拷贝后,运行时纹理和可读纹理资产都将停止遵循质量设置。上传到 GPU 的纹理的上传分辨率在 Unity 丢弃 CPU 拷贝时保持不变。如果这是不可取的,请确保纹理已在导入/构建时或运行时使用 Texture2DArray.ignoreMipmapLimit 完全分辨率上传。
通常只在您已更新 Mipmap 级别(例如使用 SetPixels)的情况下才将 updateMipmaps
设置为 false
。Apply
是一个代价高昂的操作,因为它会复制纹理中的所有像素,即使您只更改了部分像素,因此在调用它之前尽可能多地更改像素。
其他资源: Texture2D.Apply