前言
上一篇介绍了整体架构和六个类的职责划分。本篇深入三个核心问题:
- Texture Atlas 的详细实现:一张纹理如何动态容纳所有字符,空间怎么分配,tileSize 变大时怎么处理
- 为什么文字始终面向观察者:代码里没有写 Billboard,但效果等同于 Billboard,原因在哪里
- Shader 逐块解析:VS、GS、FS 每一块代码为什么这样写
一、Texture Atlas 详细实现
1.1 问题的起点
最直接的做法是:每个字符一个 GPU 纹理对象,渲染时逐字符切换纹理。这在字符数量少时没问题,但每次 glBindTexture 都会强制 GPU 管线刷新,字符数量一多,性能急剧下降。
Texture Atlas 的思路是:把所有字符位图打包进一张大纹理,渲染时永远只绑定这一张,通过 UV 坐标区分不同字符。
Atlas 纹理(示意):
┌──────┬──────┬──────┬──────┬──────┐
│ A │ B │ C │ D │ E │ ← 行 0
├──────┼──────┼────

订阅专栏 解锁全文

356

被折叠的 条评论
为什么被折叠?



