一、先分清两个分辨率
屏幕分辨率:屏幕上真实的格子数,固定不变,例如 1920×1080 渲染分辨率:游戏实际计算、绘制的画面大小,可以由游戏自己决定平时两者一样大,游戏直接画到屏幕上。
降低渲染分辨率时,游戏会先在一张较小的“草稿纸”上画,再把草稿纸放大贴到屏幕上:
第 1 步:在 1280×720 的画布上画出整个画面 ┌──────────────┐ │ 1280×720 │ GPU 只需要算 92 万个像素 └──────────────┘ │ │ 放大 1.5 倍 ▼ 第 2 步:拉伸到 1920×1080 的屏幕上显示 ┌─────────────────────┐ │ │ │ 1920×1080 │ 屏幕显示 207 万个像素 │ │ 但其中很多是“猜”出来的 └─────────────────────┘二、1920×1080 的图片经历了什么?
以一张 1920×1080 的背景图为例,它要经过两次缩放:
原图 1920×1080 │ 缩小到 0.667 倍(每 3 个像素压成 2 个) ▼ 画布 1280×720 ← 细节在这一步丢失 │ 放大到 1.5 倍(每 2 个像素撑成 3 个) ▼ 屏幕 1920×1080 ← 丢失的细节回不来,只能靠插值“猜”用一排像素说明
假设原图中有一排黑白相间的细条纹(类似细小的文字笔画):
原图 6 个像素: ■ □ ■ □ ■ □ 清晰的黑白条纹 缩小成 4 个像素: ▓ ▓ ▒ ▒ 3 格压成 2 格,黑白混在一起,变成灰色 放大回 6 个像素: ▓ ▓ ▓ ▒ ▒ ▒ 按灰色补出来,条纹没了,只剩模糊的灰结果是:最终尺寸还是 1920×1080,但画面变模糊了,细线、小字、图标边缘最明显。
这就是前面说的“不是 1:1”:原图的 1 个像素不再对应屏幕的 1 个像素。
三、为什么游戏要这么做?
GPU 的大部分工作量和要计算的像素数量成正比:
| 渲染分辨率 | 像素数 | 相对工作量 |
|---|---|---|
| 1280×720 | 约 92 万 | 1 |
| 1920×1080 | 约 207 万 | 约 2.25 倍 |
| 3200×1440(2K 手机) | 约 461 万 | 约 5 倍 |
降低渲染分辨率可以带来:
- 帧率更高(例如从 40 帧提升到 60 帧)
- 手机发热更少
- 更省电
手机屏幕像素很密,3D 画面稍微降低分辨率,玩家通常不太容易察觉。很多游戏的“画质设置”里的“分辨率:低/中/高”,调的就是渲染分辨率。
四、常见做法:3D 画面降分辨率,UI 保持原生分辨率
UI 上的文字、按钮、图标最怕模糊;而 3D 场景(地形、角色、特效)稍微模糊一点不太明显。所以游戏一般分两层渲染:
第 1 层:3D 场景 按 1280×720 渲染,再放大到 1920×1080 ← 省性能 + 第 2 层:UI(按钮、文字、血条) 直接按 1920×1080 原生分辨率绘制 ← 保持清晰 ↓ 叠在一起显示到屏幕上效果:
┌─────────────────────────────────────┐ │ [血条] 清晰 [暂停] 清晰 │ │ │ │ 3D 场景(略微模糊,不明显) │ │ │ │ (摇杆) 清晰 (攻击) 清晰 │ └─────────────────────────────────────┘这样,1920×1080 的 UI 资源仍然是 1:1 显示的,只有 3D 画面被缩放。
五、在引擎里是怎么设置的
Unity
有两种降分辨率的方式,效果差别很大:
方式 A:Screen.SetResolution(1280, 720, true) 整个游戏(包括 UI)都按 1280×720 渲染 → UI 也会变模糊 ✗(不推荐) 方式 B:URP 管线中调整 Render Scale(例如 0.67) 只降低 3D 场景的渲染分辨率 Canvas 设为 Screen Space - Overlay 时,UI 仍按原生分辨率绘制 → UI 保持清晰 ✓(推荐)Godot
项目设置 → Rendering → Scaling 3D → Scale = 0.67 只缩放 3D 画面,2D UI 不受影响Cocos Creator
可以给 3D 相机设置较低分辨率的渲染目标(RenderTexture),UI 相机仍然正常渲染到屏幕。
六、放大时怎么让画面不那么糊?
直接拉伸(双线性插值)最简单,但最模糊。现在有更好的放大算法:
| 技术 | 说明 |
|---|---|
| 双线性放大 | 最简单,效果最模糊 |
| AMD FSR | 放大后再做锐化,手机上常用,Unity URP 内置支持 |
| Apple MetalFX | 苹果设备上的放大技术 |
| 动态分辨率 | 画面复杂时自动降低分辨率,简单时提高,保持帧率稳定 |
总结
1. 降低渲染分辨率 = 先在小画布上画,再放大到屏幕 2. 图片会被“先缩小、再放大”,细节丢失,画面变模糊 3. 目的是减少 GPU 计算量,提高帧率、降低发热 4. 通常只降低 3D 场景的分辨率,UI 保持原生分辨率 5. 这样 UI 资源仍然 1:1 显示,按钮和文字保持清晰一句话:降低渲染分辨率就像把画先画在小纸上再放大复印,会变糊;所以游戏一般只对 3D 场景这样做,按钮和文字仍然按屏幕真实分辨率来画。