游戏项目里「升级纹理尺寸」总是让人紧张——兼容性够不够?低端机撑不住怎么办?要不要留后路?
P37 最近就在讨论这样一个问题:新立绘的 Spine 图集,从 2 张 2048² 升级到 1 张 4096×2048。两边的争论都很有代表性,于是做了一次完整的技术评审。
一、为什么要改
新立绘有几个特点:
- 精细细节特写:纹理质量要求高
- 一镜到底的展示:角色全身 + 局部放大,对纹理分辨率是硬需求
- Spine 分层极其细腻:各层级穿插复杂度高
当前方案用 2 张 2048² 图集,但 Spine 分层越细,跨图集的 submesh 就越多。每一层穿插都可能产生一次纹理切换,极端情况下 几十个 drawcall 就这么来的。
Spine 官方其实有明确推荐:单图集最佳。因为纹理切换在 GPU 层面是昂贵的操作。
二、升级到 4096×2048 的优劣
直观对比
| 维度 | 2×2048² | 1×4096×2048 |
|---|---|---|
| 纹理切换 | 每次 submesh 可能切 | 零切换 |
| Drawcall | 多层穿插 → 几十个 | 大幅减少 |
| 纹理槽占用 | 2 个 | 1 个 |
| 内存占用 | ~10.7MB | ~10.7MB(相同) |
| 美术拆分规划 | 需要 | 不需要 |
| 图集导出 | 2 次 | 1 次 |
关键点:4096×2048 和 2×2048² 的纹理面积完全相同,所以内存不会增加。GPU 只需 1 个纹理槽而不是 2 个,效率更高。
三、Android 兼容性:到底有多少设备支持?
这是所有人最关心的问题。
OpenGL ES 规格的说法
| 标准 | 最小保证 | 实际主流 |
|---|---|---|
| OpenGL ES 2.0 | 1024 | 4096 |
| OpenGL ES 3.0+ | 2048 | 4096-16384 |
| OpenGL ES 3.2 | 2048 | 4096-16384 |
规格上的「最小保证 2048」类似交通法规说「高速公路最低限速 60km/h」——实际上没有车只能开 60。
实际设备数据(2024-2025)
全球活跃 Android 设备中,4096×4096 纹理支持率约为 99%+。限制在 2048 的设备:
- Mali-400 MP 系列(2012 年)
- Adreno 200/300 系列(2013 年前)
- PowerVR SGX 系列(2013 年前)
关键判断:这些设备根本跑不动 P37 的画质要求。所以兼容性风险不是「有大量用户受影响」,而是「有用户用的设备本身就该被排除」。
公司测试结果
研发组已经在公司低端机上跑过——全部支持。这个信号比外部统计更有说服力,因为公司的测试机已经代表了内部对「最低可接受体验」的定义。
四、1200 元的兼容性测试
为了彻底排除风险,P37 计划用 1200 元预算做一次系统化的兼容性测试。
推荐方案
不跑云平台全量遍历(那个要几千上万),而是买二手真机覆盖 GPU 矩阵:
| 机型 | GPU | 定位 | 二手价 |
|---|---|---|---|
| 红米 9A | PowerVR GE8320 | 低端 PowerVR | ¥150 |
| 荣耀 8X | Mali-T830 | 2018 老 Mali | ¥200 |
| OPPO A5 | Adreno 506 | 2019 低端 Adreno | ¥180 |
| 红米 Note 5 | Adreno 509 | 2018 中端 Adreno | ¥150 |
| 华为畅享 9 | Mali-G51 | 2018 中低端 Mali | ¥180 |
| 合计 | 三家 GPU + 三档水平全覆 | ¥860 |
剩下的 ¥340 还能补一台最极端的低端机。真机可以反复使用,后续任何变更随时验证,不用再走审批。
测试内容
每台设备验证:
GL_MAX_TEXTURE_SIZE运行时检查- 新立绘 Spine 单图集加载 + 渲染 → 无花屏/黑块/错位
- 帧率对比(应该≥双图集方案)
- 截图留档
五、对美术工艺的影响
一个容易被忽略但很重要的问题:这个改动会不会增加美术的工作量?
答案:不会。反而更简单了。
因为 Spine 创作阶段用的是矢量和骨骼系统,跟图集尺寸完全解耦。图集只是导出产物,不是创作工具。
| 阶段 | 以前(双图集) | 方案(单图集) | 变化 |
|---|---|---|---|
| 创作 | 高精度源文件 | 相同 | 不变 |
| 拆分规划 | 决定哪个层进哪张 → 30-60 分钟 | 不需要 | ✅ 省 |
| 导出 | 2 次 | 1 次 | ✅ 省 |
| 拼接验收 | 检查跨图集对齐 | 不需要 | ✅ 省 |
如果 P37 有 10 个角色,光是拆分规划这一步就省了 5-10 小时。1200 元的测试费远小于省下的工时。
六、结论
采用 4096×2048 单图集方案。 四个理由:
- 性能提升 — drawcall 大幅减少,画质上限更高
- 内存不变 — 纹理面积相同
- 风险可控 — 99%+ 设备支持,不支持的也跑不动画质
- 工艺简化 — 美术少一步拆分规划,导出从两次变一次
唯一需要做的:花 1200 元做一次系统化的 GPU 覆盖测试,把「理论上的 99%+」变成「实测过的 100%」。
风险很低,收益明确。
2026-05-12,极致游戏 P37 项目技术评审记录