纹理压缩格式优化
🎯 Unity 项目纹理压缩格式优化终极指南
——不同平台、不同手机型号,如何正确选择
🧩 什么是纹理压缩(Texture Compression)?
- Texture压缩 = 减小显存占用,提升加载速度,减轻GPU负担
- 纹理是游戏中最大资源,占用50%+内存
- 正确压缩:减少GPU Bandwidth,提高渲染性能
- 错误压缩:画面失真、卡顿、发热
🎯 总结:压缩纹理=手机省电不发烧,帧率飞升不卡顿
🧩 常见纹理压缩格式
格式 | 平台支持 | 特点 | 适合场景 |
---|---|---|---|
ETC1 | Android | 不支持Alpha,兼容性好,压缩率高 | 普通无透明贴图 |
ETC2 | Android 4.3+ | 支持Alpha通道,质量提升 | 高端Android,带透明 |
ASTC | Android 7.0+/iOS | 质量最好,尺寸灵活,压缩率高 | 高端机型,次时代画质 |
PVRTC | iOS | 早期iOS支持,压缩率高但质量一般 | 旧iPhone/iPad |
DXT (BC1/BC3) | PC/主机 | 高质量压缩,Desktop和主机标准 | PC,主机 |
RGBA32 | 通用 | 无压缩,完美质量,显存炸裂 | UI/图标,超重要素材 |
Crunched ETC/ASTC | Android/iOS | 更小的包体体积(加载稍慢) | 压缩包体优先时用 |
🧩 不同手机平台、机型压缩推荐表
平台 | 推荐压缩格式 | 适合机型范围 |
---|---|---|
Android中低端 | ETC1 + Alpha拆图 | 低端机 (骁龙600系列,MTK P系列) |
Android中高端 | ETC2 / ASTC | 骁龙845+/天玑9000+/骁龙8Gen系列 |
Android旗舰 | ASTC | 骁龙8Gen2/Gen3,三星S系列,小米Ultra系列 |
iOS所有机型 | ASTC (PVRTC兼容) | iPhone6s及以后全部支持ASTC |
PC/主机 | DXT1/5 (BC1/3) | 绝对标准 |
🎯 总结:
- Android必须区分高低端机压缩
- iOS一律ASTC,6s以后全支持
- PC/主机用DXT1/DXT5
🧩 不同格式压缩率 & 质量对比
格式 | 纹理大小(1024x1024) | 支持Alpha | 质量 | 压缩率 |
---|---|---|---|---|
RGBA32 | 4MB | ✅ | 无损 | 1:1 (无压缩) |
ETC1 | 0.5MB | ❌ | 中等 | 8:1 |
ETC2 | 1MB | ✅ | 良好 | 4:1 |
ASTC 6x6 | 0.5MB | ✅ | 超高 | 8:1 |
ASTC 4x4 | 1MB | ✅ | 超高清 | 4:1 |
PVRTC 4bpp | 0.5MB | ✅ | 一般(模糊) | 8:1 |
DXT5 | 1MB | ✅ | 高质量 | 4:1 |
🚩 大型项目纹理压缩常见坑(踩坑警告)
坑点 | 问题描述 | 性能影响 |
---|---|---|
一刀切RGBA32 | 所有贴图无压缩,内存爆炸,加载慢 | 💣 内存炸,发热卡顿 |
全用ETC1 | 有Alpha的Sprite透明丢失,显示异常 | 🐛 UI错乱,丢图 |
不做高低端机型区分 | 低端机开ASTC,GPU跑不动;高端机ETC2浪费性能 | 🔥 性能浪费,帧率低 |
压缩过猛导致质量差 | ASTC 12x12,PVRTC太低bit,画质模糊 | 🤢 花屏、模糊,体验差 |
AB包和压缩混用出错 | BuildTarget不切换,压缩格式错误 | 🚨 黑图,加载失败 |
动态压缩纹理 | 运行时CompressTexture,极度卡顿 | 🐢 冻帧,卡成PPT |
图片带Alpha没设置ETC2 | ETC1不支持透明,Alpha全丢,Sprite图出错 | 🐛 透明区域黑色 |
🧩 正确的纹理压缩策略(实战推荐)
类型 | 推荐做法 |
---|---|
UI图片 | RGB格式Atlas,Alpha分开单独通道(低端机ETC1拆图,高清ASTC) |
透明Sprite | Android高端用ASTC,低端用ETC2,iOS统一ASTC |
特效贴图 | 单通道图用R8,特效序列帧用ASTC小尺寸 |
地图/大背景 | 分块切图+ASTC,避免大图GPU爆缓存 |
3D模型纹理 | 高端ASTC 6x6,中低端ETC2 |
AB包分开(多平台Asset) | 针对不同平台打不同压缩版本的AB |
🎯 细节优化:
- ✅ Android用ASTC (6x6 或 8x8)作为高配默认;
- ✅ iOS/iPad全系ASTC,适配性最好;
- ✅ 低端安卓机专门打ETC1/ETC2 Variant;
- ✅ 图集SpritePacking后再压缩,减少压缩误差;
- ✅ 全屏背景等大纹理要拆分,防止超纹理缓存行。
🧠 生活化理解总结
纹理压缩就像:快递打包
- 大件不打包,车装不下;
- 小件打太狠,商品压坏;
- 高端客户用精包装(ASTC),低端快递用普通包装(ETC1/ETC2);
- PC客户走顺丰加固(DXT5)。
🎯 总结:
能压必压,压要对路,机型分流,质要兼顾!
🚀
相关文章:
纹理压缩格式优化
🎯 Unity 项目纹理压缩格式优化终极指南 ——不同平台、不同手机型号,如何正确选择 🧩 什么是纹理压缩(Texture Compression)? Texture压缩 = 减小显存占用,提升加载速度,减轻GPU负担纹理是游戏中最大资源,占用50%+内存正确压缩:减少GPU Bandwidth,提高渲染性能错…...

使用Virtual Serial Port Driver+com2tcp(tcp2com)进行两台电脑的串口通讯
使用Virtual Serial Port Drivercom2tcp或tcp2com进行两台电脑的串口通讯 问题说明解决方案方案三具体操作流程网上教程软件安装拓扑图准备工作com2tcp和tcp2com操作使用串口助手进行验证 方案三存在的问题数据错误通讯延时 问题说明 最近想进行串口通讯的一个测试,…...
【从0-1的HTML】第3篇:html引入css的3种方式
文章目录 HTML中引入CSS的方式行内样式内部样式外部样式yinru.css文件 完整html文件 引入CSS方式的优先级 HTML中引入CSS的方式 HTML:是使用标签来描述网页元素 CSS:是Cascading Style Sheets,层叠样式表,用来控制样式来显示网页…...

数智破局·生态共生:重构全球制造新引擎 2025 WOD制造业数字化博览会即将在沪盛大启幕
共探数智化未来,共创新质生产力。2025年6月17日—19日,上海浦东新国际博览中心将迎来全球制造业数字化转型的盛会——WOD制造业数字化博览会。作为全球首个聚焦制造业数字化全场景的专业展会,本届展会以“数智破局生态共生:重构全…...
machine_env_loader must have been assigned before creating ssh child instance
在主机上执行roslaunch命令时,报错:machine_env_loader must have been assigned before creating ssh child instance。 解决办法: 打开hostos文件,检查local host 前的内部ip是否正常。操作示例: 先输入下方指令打…...

BGP/MPLS IP VPN跨域解决方案
目录 MPLS VPN跨域方案出现背景: MPLS VPN回顾 VRF(Virtual Route Forward)虚拟路由转发 MPLS(Multiple Protcol Label Swtich)多协议标签交换 MP-BGP多协议BGP MPLS VPN跨域OptionA 控制平面: 转发平面: 总结: 挑战: MPLS VPN跨域OptionB 非RR场景: 控制平面: 转发…...
C语言-10.字符串
10.1字符串 10.1-1字符串 字符数组 char word[] = {‘H’,‘e’,‘l’,‘l’,‘o’,‘!’}; word[0]Hword[1]eword[2]lword[3]lword[4]oword[5]!这不是C语言的字符串,因为不能用字符串的方式做计算 字符串 char word[] = {‘H’,‘e’,‘l’,‘l’,‘o’,‘!’}; word[0]Hwo…...

backend 服务尝试连接 qdrant 容器,但失败了,返回 502 Bad Gateway 问题排查
遇到的问题是: backend 报错:502 Bad Gateway 来自 Qdrant → 导致接口 /api/chat 返回 500 Internal Server Error并且日志中提示: QDRANT_URL http://qdrant:6333✅ 问题分析 这个错误的根本原因是: 你的 backend 服务尝试连…...
硬件学习笔记--66 MCU的DMA简介
DMA(Direct Memory Access,直接存储器访问)是MCU中一种重要的数据传输机制,它允许外设与存储器之间或存储器与存储器之间直接传输数据,而无需CPU的持续干预。 1、DMA的基本原理 1.1 核心概念: 1…...

18. Qt系统相关:多线程
一、概述 在Qt中,使用QThread类对系统线程进行了封装。QThread代表一个在应用程序中可独立控制的线程,也可以和进程中的其他线程共享数据。 二、QThread常用API 三、QThread使用 自定义一个类,继承自QThread,并且只有一个线程处…...

6个月Python学习计划 Day 14 - 异常处理基础( 补充学习)
第二周 Day 8 - Python 函数基础 Day 9 - 函数进阶用法 Day 10 - 模块与标准库入门 Day 11 - 列表推导式、内置函数进阶、模块封装实战 Day 12 - 字符串处理 & 文件路径操作 Day 13 - 文件操作基础 🎯 今日目标 理解异常的概念和常见异常类型掌握 try-except …...

使用jstack排查CPU飙升的问题记录
最近,看到短视频传播了一个使用jstack来协助排查CPU飙升的案例。我也是比较感兴趣,参考了视频博主的流程,自己做了下对应案例的实战演练,在此,想做一下,针对相关问题模拟与排查演练的实战过程记录。 案例中…...

cursor如何开启自动运行模式
在Cursor中,开启自动运行模式即启用“Yolo Mode”,具体操作如下: 按下Ctrl Shift J(Windows/Linux)或Cmd Shift J(Mac)打开Cursor设置。导航到“Features”(功能)选…...

SecureCRT 设置超时自动断开连接时长
我们在使用SecureCRT 连接服务器时,经常性出现2分钟未操作已连接的服务器,就会自动断开连接,此时需要重新连接,非常影响服务器操作,本文可以很好带领大家解决这种问题。...
《复制粘贴的奇迹:原型模式》
📖 背景故事 创业初期,小明每天加班写配送路线、配送策略、营销套餐。可当业务做大后,他发现大家常常下单“上次那个套餐”—— “老板,再来一个上次的奶茶水果!” “老样子,照搬昨天晚上的宵夜套餐&#…...

IEC 61347-1:2015 灯控制装置安全标准详解
IEC 61347-1:2015灯控制装置安全标准详解 IEC 61347-1:2015 是国际电工委员会(IEC)发布的灯控制装置第1部分:通用要求和安全要求的核心标准,为各类照明用电子控制设备设定了全球通用的安全基准。该标准适用于独立式或内置于灯具/…...

Ansys Zemax | 手机镜头设计 - 第 4 部分:用 LS-DYNA 进行冲击性能分析
附件下载 联系工作人员获取附件 该系列文章将讨论智能手机镜头模组设计的挑战,从概念和设计到制造和结构变形分析。本文是四部分系列中的第四部分,它涵盖了相机镜头的显式动态模拟,以及对光学性能的影响。使用 Ansys Mechanical 和 LS - DY…...
[蓝桥杯]实现选择排序
实现选择排序 题目描述 实现选择排序算法。介绍如下: 选择排序的工作原理是每一次从需要排序的数据元素中选出最小的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排列完毕。 请编写代码,完成选择排序,…...

[蓝桥杯]卡片换位
卡片换位 题目描述 你玩过华容道的游戏吗? 这是个类似的,但更简单的游戏。 看下面 3 x 2 的格子 --------- | A | * | * | --------- | B | | * | --------- 在其中放 5 张牌,其中 A 代表关羽,B 代表张飞,* …...

【论文笔记】High-Resolution Representations for Labeling Pixels and Regions
【题目】:High-Resolution Representations for Labeling Pixels and Regions 【引用格式】:Sun K, Zhao Y, Jiang B, et al. High-resolution representations for labeling pixels and regions[J]. arXiv preprint arXiv:1904.04514, 2019. 【网址】…...

【题解-洛谷】P9422 [蓝桥杯 2023 国 B] 合并数列
题目:P9422 [蓝桥杯 2023 国 B] 合并数列 题目描述 小明发现有很多方案可以把一个很大的正整数拆成若干正整数的和。他采取了其中两种方案,分别将他们列为两个数组 { a 1 , a 2 , ⋯ a n } \{a_1, a_2, \cdots a_n\} {a1,a2,⋯an} 和 { b 1 , …...
在MATLAB中,`mean(P_train, 2)` 的含义
在MATLAB中,mean(P_train, 2) 的含义是: 计算矩阵 P_train 中每一行的平均值(沿第2个维度操作)。 详解: mean(A, dim) 函数: 对数组 A 沿维度 dim 求平均值。dim1 → 按列计算(返回行向量&…...
开源模型应用落地-OpenAI Agents SDK-集成Qwen3-8B(一)
一、前言 在人工智能技术迅猛发展的今天,OpenAI Agents SDK 为开发者提供了一个强大的工具集,用于构建基于 Python 的智能代理应用。这些代理可以执行从简单任务到复杂决策的一系列操作,极大地提升了应用程序的智能化水平。 通过 OpenAI Agents SDK,可以利用 Python 编程语…...

109页PPT华为流程模块L1-L4级梳理及研发采购服务资产5级建模
华为的流程体系是其核心竞争力之一,也是其从一家小型民营企业成长为全球领先科技巨头的重要支撑。这套体系的核心思想是以客户为中心、以价值创造为导向、以流程驱动业务、持续优化改进。 下载资料请查看文章中图片右下角信息 以下是华为流程体系的关键组成部分和特…...

第N1周:one-hot编码案例
🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 一、one-hot编码概念 自然语言处理(NLP)中的文本数字化:文字对于计算机来说就仅仅只是一个个符号,计算…...

Windows安装docker desktop
Windows 版本: Windows 10/11(64位)专业版、企业版或教育版(家庭版需手动配置)。 版本号需 ≥ 1909(建议更新到最新系统) 打开程序 启动服务后点点点 重启生效(没有的话 安装WSL…...

Ros(俩不同包的节点 交流 topic message)
不同的俩节点 如chao_node 和ma_node .在俩不同的包下。 他们若想互相产生联系, 就需要靠这个关系了。 想象一下是开黑的场景 其实群名就是topic 而发送的消息就是Message。 其中主动刷屏的message的一方 就是 Publisher 而接受的那一方 就是subsciber...

李沐《动手学深度学习》 | 数值稳定性
文章目录 数值稳定性梯度消失Sigmoid作为激活函数 梯度爆炸 让训练更加稳定合理的权重初始化Xavier初始化(常用)He初始化/Kaiming方法 Batch Normalization Q&A 数值稳定性 当神经网络的深度比较深时,非常容易数值不稳定。 不稳定梯度是…...

OpenCV CUDA模块图像处理------图像连通域标记接口函数connectedComponents()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数在 GPU 上执行二值图像的连通域标记操作,即将图像中所有相连的前景像素区域赋予相同的标签(label)&…...

Android Studio 打包时遇到了签名报错问题:Invalid keystore format
错误指出密钥库的格式无效,可能是由于密钥库本身的问题导致的,还有一种可能是由于jdk版本导致。我试过重新签名,也是不行,后来发现是JDK版本问题,我的Studio之前是jbr11,好像后来合并代码重新下载编译了项目…...