中EN
概念页

覆盖层与用户界面渲染

Overlays & User Interface Rendering

HUD、武器选择界面、各种菜单等图形用户界面,加上调试绘制,都在主 3D 场景渲染完之后才画,所以统称覆盖层 (overlay)。它们一般关闭深度测试、用屏幕空间四边形和正交投影绘制,由文字、位图、嵌入视频和矢量图形几类二维图元组成(GEA4 卷 II 12.8)。

怎么画

  • 关闭 z 测试,保证覆盖层总在 3D 场景之上(卷 II 12.8)。
  • 二维覆盖层:在屏幕空间用正交投影画四边形(两个三角形)。
  • 三维覆盖层:可以用正交投影,也可以用常规透视投影、把几何放在观察空间里,让它跟着相机走(坐标空间见 坐标空间)。
  • 调试绘制同样作为覆盖层画在最后,见 日志与调试绘制。

UI 的图元

类别内容
文字任何 UI 都要显示可读字符串,通常需要多种字体和字号,见 文本渲染
位图图标几乎覆盖文字以外的所有元素:滚动条两端的小箭头、当前武器图标、提示交互的三角形按钮;也有截图、角色头像等大图
嵌入视频在屏幕上某个视口里播放预渲染影片
矢量图形用数学直线和曲线描述、运行时动态光栅化,适合细线、方框、圆、弧;图标也可以做成矢量的。SVG 是编码和光栅化矢量图形的标准格式

文字系统的要点

字形图集、FreeType 运行时光栅化、有符号距离场字体、GPU 直接渲染轮廓(Slug)、排版 (shaping) 与字距调整等,统一放在 文本渲染 的「GEA 的视角」一节。GEA 特别提醒:只实现游戏真正需要的功能,比如游戏从不显示动画文字,就没必要给引擎做高级文字动画(卷 II 12.8.0.1)。

与 UE5 的对应

UE5 的 UI 框架(Slate、UMG、Common UI)是这一层在商业引擎里的实现,见 UMG、Slate 与 Common UI。

取舍

  • 二维覆盖层用正交投影的屏幕空间四边形,简单直接;三维覆盖层可以选正交投影,也可以用透视投影放在观察空间里跟随相机(卷 II 12.8)。
  • 图标可以是位图,也可以是矢量图形;矢量图形需要运行时光栅化,但适合细线、圆、弧等元素(卷 II 12.8)。
  • 文字功能按需实现,不为用不到的特性付出成本(卷 II 12.8.0.1)。

GEA 原书中的问题

12.8 节说 UI 图元"分三大类",随后列出的却是文字、位图、嵌入视频、矢量图形四类。

  1. Game_Engine_Architecture_4th_Edtion_Volume_2_-_Jason_Gregory.pdf
  2. Jason Gregory《Game Engine Architecture》第 4 版(2026)卷 II 第 12 章 12.8 节

相关页面

图形学文本渲染Text Rendering文本中一个像素的变化就可能把 "l" 变成 "1",因此字形渲染格外讲究。主要路线有:按字号预生成字形位图纹理(配合微调和子像素渲染)、有符号距离场纹理(可在三维表面任意缩放旋转)、以及在 GPU 上直接求值字形曲线。游戏开发日志与调试绘制Logging & Debug Drawing几乎所有专业团队都会为引擎打造一套调试与开发工具。本页记录其中最基础的两类:日志与追踪(格式化调试输出、详细级别、通道、镜像到文件、崩溃报告)和调试绘制(在游戏世界或屏幕上画线、形状和文字以可视化数学计算)。(卷 I 第 10 章 引言、10.1–10.2 节)游戏开发 · UE5UMG、Slate 与 Common UIUMG, Slate & Common UISlate 是 UE 平台无关的 C++ 声明式 UI 框架(编辑器即用它构建),UMG 是在其之上的可视化控件蓝图层(UE 5.8 API:UWidget 是所有暴露给 UObject 的被包装 Slate 控件的基类),Common UI 插件再在 UMG 之上补充多层界面、输入路由、手柄导航、平台按键图标和样式资产。官方 UMG 最佳实践强调事件驱动更新而非绑定/Tick、固定分辨率与 DPI 制作、用 Scale Box 而非 Render Transform 做永久缩放。图形学透明渲染与 Alpha 混合Transparency & Alpha Blending本页讲最简单的"视角相关"透明:半透明物体只衰减其后方物体的颜色。z-buffer 每像素只存一个表面,所以透明物体通常要从后往前用 over 运算符混合;顺序无关透明 (OIT) 方法用多遍渲染、逐像素链表或近似公式避免排序,各有内存、性能或准确性代价。预乘 alpha 让过滤、混合和合成更正确高效。图形学坐标空间Coordinate Spaces顶点从模型到屏幕要依次经过模型空间、世界空间、观察空间、裁剪空间、标准化设备坐标 (NDC)、窗口坐标。每一步变换都有明确目的,大部分可以用 4×4 矩阵表示并相乘合并。游戏开发游戏本地化与 UnicodeGame Localization & Unicode本地化(国际化,I18N)是把软件改编为其他语言版本,最好从第一天起规划并贯穿每个开发步骤。GEA 介绍了 Unicode 与 UTF-32/UTF-8/UTF-16/UCS-2 编码、char 与 wchart、Windows 的字符串 API 约定、主机上的选择,字符串之外的本地化问题,以及核心基础设施——字符串数据库 + 按 ID 查找当前语言字符串的运行时函数,并以 Naughty Dog 的本地化工具为例。

被这些页面引用2 篇

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原