【发布时间】:2018-05-04 07:18:41
【问题描述】:
我已阅读以下here:
当您使用不支持的纹理压缩格式时 目标平台,将纹理解压缩为 RGBA 32 并存储 在压缩纹理旁边的内存中。当这种情况发生时,时间 解压纹理丢失,内存丢失,因为你是 将它们存储两次。此外,各个平台都有不同的 硬件,并经过优化以最有效地与特定的工作 压缩格式;选择不兼容的格式会影响您的 游戏的表现。下表显示了每个支持的平台 压缩格式。
让我们讨论一个具体案例。假设我在光盘上存储了一个.png 文件并从 Android 打包了我的游戏。现在我在一个 Android 设备上玩那个游戏,它的 GPU 需要 ETC2 作为原生纹理格式。我是否正确,当我进入游戏时应该发生以下情况:
- 从磁盘读取PNG文件到RAM(RAM用于存储PNG文件数据)
- 将 PNG 解压缩为 RGBA32(RAM 用于 PNG 和解压缩数据)
- 将 RGBA32 压缩为 ETC2 并上传到 GPU(如果我有纹理现金,则在 RAM 上,然后我可能会为 PNG 文件数据释放内存,但我需要存储 RGBA32 以供将来重用,或者至少我需要存储 ETC2)李>
这意味着我在 PNG->RBGA32->ETC2 之间进行了大量转换,在转换过程中,我不仅使用了 CPU 资源,还大量使用了 RAM。我的问题 - 我是否正确理解当一个人没有为目标平台打包原生纹理格式时会发生什么?
【问题讨论】:
标签: unity3d textures texture2d