包含此页的版本:
不含此页的版本:
对于具有 DirectX 11 或更高级别 GPU 的设备,其中保证支持 BC7 和 BC6H 格式,建议选择压缩格式:
RGB 纹理 - DXT1 四位/像素计算机图像中的最小单位。像素大小取决于您的屏幕分辨率。像素光照是在每个屏幕像素下计算的。更多信息
请参阅术语表.
RGBA 纹理 - BC7(质量更高,压缩速度较慢)或 DXT5(压缩速度更快),均为 8 位/像素。
HDR 纹理 - BC6H 8 位/像素。
如果您需要在 PC 上支持 DirectX 10 级 GPU(2010 年之前的 NVIDIA GPU、2009 年之前的 AMD、2012 年之前的 Intel),那么首选 DXT5 而不是 BC7,因为这些 GPU 不支持 BC7 或 BC6H。
有关所有支持的格式的详细信息,请参阅支持的纹理格式参考表。
对于使用 A8 芯片 (2014) 或更高版本的 Apple 设备,ASTC 是 RGB 和 RGBA 纹理的推荐纹理格式。这种格式允许您在粒度级别上在纹理质量和大小之间进行选择:从 8 位/像素(4x4 块大小)一直到 0.89 位/像素(12x12 块大小)。
如果需要支持旧设备,或者您想要额外的 Crunch 压缩,则 Apple 设备支持 A7 芯片 (2013) 开始的 ETC/ETC2 格式。
在iOS上,你可以在玩家设置设置,可让您为 Unity 构建的最终游戏设置各种特定于玩家的选项。更多信息
请参阅术语表.ASTC 是首选,但在 A7 设备(最早支持 Metal 的设备)上不受支持,并且将在运行时解压缩。
有关所有支持的格式的详细信息,请参阅支持的纹理格式参考表。
Android 上的纹理格式支持很复杂。您可能需要使用不同的子目标构建多个应用程序版本。
您可以在播放器设置中选择默认格式。您的选项是 ASTC、ETC2 和 ETC(RGB 为 ETC1,RGBA 为 ETC2)。有关不同设置如何交互的更多详细信息,请参阅纹理压缩设置。
对于 LDR RGB 和 RGBA 纹理,大多数支持 OpenGL ES 3.1 或 Vulkan 的现代 Android GPU 也支持 ASTC 格式,包括: 自 Adreno 4xx / Snapdragon 415 (2015) 以来的高通 GPU,自 Mali T624 (2012) 以来的 ARM GPU,自 Tegra K1 (2014) 以来的 NVIDIA GPU,自 GX6250 (2014) 以来的 PowerVR GPU。
如果您需要对旧设备的支持,或者想要额外的 Crunch 压缩,那么所有运行 Vulkan 或 OpenGL ES 3.0 的 GPU 都支持 ETC2 格式。
生成的图像质量相当高,并且支持一到四个组件的纹理数据。
对于更旧的设备,通常只有 ETC 格式可用。缺点是没有直接的 alpha 通道支持。为精灵2D 图形对象。如果你习惯于在3D中工作,精灵本质上只是标准纹理,但有一些特殊的技术可以组合和管理精灵纹理,以提高开发过程中的效率和便利性。更多信息
请参阅术语表,Unity 提供了一个使用 ETC1 压缩的选项,方法是将纹理拆分为两个 ETC1 纹理:一个用于 RGB,一个用于 alpha。要启用此功能,请在导入精灵图集(Sprite Atlas) 一种实用程序,将多个精灵纹理紧紧地打包在称为图集的单个纹理中。更多信息
请参阅术语表.精灵着色器在 GPU 上运行的程序。更多信息
请参阅术语表对这两个纹理进行采样,并将它们组合成最终结果。
对于不支持 ASTC 格式的旧版 Android 设备,纹理会解压缩为未压缩的 RGBA 32 位格式。这会增加内存使用量,并会减慢在 CPU 上执行的解压缩速度。
为HDR高动态范围
请参阅术语表纹理,ASTC HDR 是 Android 设备上唯一可用的压缩格式。ASTC HDR 需要 Vulkan 或 GL_KHR_texture_compression_astc_hdr 支持。ASTC 是最灵活的格式。
如果设备不支持 ASTC HDR,纹理将在运行时解压缩为 RGB9e5 或 RGBA Half,具体取决于 Alpha 通道的使用情况。
对于不支持 ASTC HDR 的设备,所有运行 Vulkan、Metal 或 OpenGL ES 3.0 的设备都支持 RGB9e5,适用于没有 alpha 通道的纹理。如果需要 alpha 通道甚至更广泛的支持,请使用 RGBA Half。这占用的内存是 RGB9e5 的两倍。
如果您想将应用分发到 Google Play,最佳做法是使用纹理压缩定位。
有关所有支持的格式的详细信息,请参阅支持的纹理格式参考表。
要使用AssetBundle变体,必须将所有无法使用ETC1进行干净压缩的纹理隔离到仅纹理的AssetBundle中。接下来,使用特定于供应商的纹理压缩格式(例如 DXT5)创建这些 AssetBundle 的足够变体,以支持 Android 生态系统中不支持 ETC2 的切片。对于每个 AssetBundle 变体,将包含的纹理的 TextureImporter 设置更改为适合变体的压缩格式。
在运行时,可以使用SystemInfo.SupportsTextureFormat应用程序接口。此信息应用于选择和加载包含以受支持格式压缩的纹理的 AssetBundle 变体。
有关纹理压缩格式的更多信息,请参阅有关纹理压缩支持的Android文档。